资源描述:
《OpenJudge算法设计与分析习题解答》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、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样例输出0011000002810
2、003620004430005240006050007501008311009121010002源代码:#include#includeintmain(){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",t,k,j,i);t++
3、;}}}}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<
4、stdio.h>intmain(){printf("5");printf("2");printf("1");printf("3");printf("4");return0;}3、鸡兔同笼描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。输入一行,一个正整数a(a<32768)。输出一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。如果没有满足要求的答案,则输出两个0,中间
5、用一个空格分开。样例输入20样例输出510源代码:#includeintmain(){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);elseprintf("00");return0;}4、谁是你的潜在朋友描述“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太
6、多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。首先你对借阅记录进行了一番整理,把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行的数表
7、示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^^)样例输入452321样例输出1BeiJu1BeiJu源代码:#include#includeintb[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("Bei
8、Ju");elseif(b[a[i]]>=2)printf("%d",b[a[i]]-1);}return0;}5、称体重描述赵、钱、孙、李四个人中既有大人也有小孩,给他们称体重时发现,他们每个人的体重都不一样,且体重(单位:公斤)恰好是10的整数倍,且他们的体重都不高于50公斤,