OpenJudge算法设计与分析习题解答.docx
- 文档编号:11433140
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:29
- 大小:23.05KB
OpenJudge算法设计与分析习题解答.docx
《OpenJudge算法设计与分析习题解答.docx》由会员分享,可在线阅读,更多相关《OpenJudge算法设计与分析习题解答.docx(29页珍藏版)》请在冰豆网上搜索。
OpenJudge算法设计与分析习题解答
CompanyDocumentnumber:
WUUT-WUUY-WBBGB-BWYTT-1982GT
OpenJudge算法设计与分析习题解答
1、硬币面值组合
描述
使用1角、2角、5角硬币组成n角钱。
设1角、2角、5角的硬币各用了a、b、c个,列出所有可能的a,b,c组合。
输出顺序为:
先按c的值从小到大,若c相同则按b的值从小到大。
输入
一个整数n(1<=n<=100),代表需要组成的钱的角数。
输出
输出有若干行,每行的形式为:
iabc
第1列i代表当前行数(行数从001开始,固定3个字符宽度,宽度不足3的用0填充),后面3列a,b,c分别代表1角、2角、5角硬币的个数(每个数字固定12个字符宽度,宽度不足的在左边填充空格)。
样例输入
10
样例输出
0011000
002810
003620
004430
005240
006050
007501
008311
009121
010002
源代码:
#include<>
#include<>
intmain(){
intt=1;
inti,j,k;
intn;
scanf("%d",&n);
intA=n,B=n/2,C=n/5;
for(i=0;i<=C;i++){
for(j=0;j<=B;j++){
for(k=0;k<=A;k++){
if(i*5+j*2+k*1==n){
printf("%03d%12d%12d%12d\n",t,k,j,i);
t++;
}
}
}
}
getchar();
return0;
}
2、比赛排名
描述
5名运动员参加100米赛跑,各自对比赛结果进行了预测:
A说:
E是第1名。
B说:
我是第2名。
C说:
A肯定垫底。
D说:
C肯定拿不了第1名。
E说:
D应该是第1名。
比赛结束后发现,只有获第1名和第2名的选手猜对了,E不是第2名和第3名,没有出现名次并列的情况。
请编程判断5位选手各是第几名。
输入
无
输出
输出要求:
按ABCDE的顺序输出5行,其中第1行是A的名次,第2行是B的名次,
第3行是C的名次,第4行是D的名次,第5行是E的名次。
样例输入
样例输出
源代码:
#include<>
intmain()
{
printf("5\n");
printf("2\n");
printf("1\n");
printf("3\n");
printf("4\n");
return0;
}
3、鸡兔同笼
描述
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
输入
一行,一个正整数a(a<32768)。
输出
一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。
如果没有满足要求的答案,则输出两个0,中间用一个空格分开。
样例输入
20
样例输出
510
源代码:
#include<>
intmain()
{
intn;
scanf("%d",&n);
if(n%4==0)
printf("%d%d",n/4,n/2);
elseif(n%4!
=0&&n%2==0)
printf("%d%d",n/4+1,n/2);
else
printf("00");
return0;
}
4、谁是你的潜在朋友
描述
“臭味相投”——这是我们描述朋友时喜欢用的词汇。
两个人是朋友通常意味着他们存在着许多共同的兴趣。
然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。
幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。
同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。
你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。
输入
第一行两个整数N,M,2<=N,M<=200。
接下来有N行,第i(i=1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
输出
包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。
如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^^)
样例输入
45
2
3
2
1
样例输出
1
BeiJu
1
BeiJu
源代码:
#include<>
#include<>
intb[222];
inta[222];
intn,m;
intmain()
{
scanf("%d%d",&n,&m);
for(inti=1;i<=n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
for(inti=1;i<=n;i++){
if(b[a[i]]==1)
printf("BeiJu\n");
elseif(b[a[i]]>=2)
printf("%d\n",b[a[i]]-1);
}
return0;
}
5、称体重
描述
赵、钱、孙、李四个人中既有大人也有小孩,给他们称体重时发现,他们每个人的体重都不一样,且体重(单位:
公斤)恰好是10的整数倍,且他们的体重都不高于50公斤,已知赵、钱两人的体重之和恰好等于孙、李两人的体重之和;赵、李两人的体重之和大于孙、钱两人的体重之和,并且赵、孙俩人的体重之和还小于钱的体重。
请编写一个程序,按照体重从小到大的顺序,打印出四人的姓氏的首字母和体重数。
输入
无
输出
打印出四人的姓氏的首字母(小写)和体重数(每人一行,姓名首字母和体重数之间用空格隔开)。
样例输入
无
样例输出
z10
q20
s30
l40
(以上输出仅用于说明格式)
#include<>
#include<>
intmain(){
inta[4],b[4]={1,2,3,4},c[4]={'z','q','s','l'};
inti,j,t;
for(a[0]=1;a[0]<=5;a[0]++){
for(a[1]=1;a[1]<=5;a[1]++){
for(a[2]=1;a[2]<=5;a[2]++){
for(a[3]=1;a[3]<=5;a[3]++){
if((a[1]!
=a[0]&&a[2]!
=a[1]&&a[2]!
=a[0]&&a[3]!
=a[2]&&a[3]!
=a[1]&&a[3]!
=a[0])
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenJudge 算法 设计 分析 习题 解答