算法标准答案讲义资料

上传人:yulij****0329 文档编号:128139594 上传时间:2020-04-08 格式:DOCX 页数:144 大小:131.95KB
返回 下载 相关 举报
算法标准答案讲义资料_第1页
第1页 / 共144页
算法标准答案讲义资料_第2页
第2页 / 共144页
算法标准答案讲义资料_第3页
第3页 / 共144页
算法标准答案讲义资料_第4页
第4页 / 共144页
算法标准答案讲义资料_第5页
第5页 / 共144页
点击查看更多>>
资源描述

《算法标准答案讲义资料》由会员分享,可在线阅读,更多相关《算法标准答案讲义资料(144页珍藏版)》请在金锄头文库上搜索。

1、Problem H: 乘法口诀Time Limit: 1 SecMemory Limit: 64 MBSubmit: 11234Solved: 3034Description还记得以前小学时的九九乘法口诀吧。现在要求你编写程序打印出乘法口诀。 不过现在的乘法口诀表跟以前稍微有点区别,我告诉你一个数字n( 1 = n = 9),你要给我打出相应的nn乘法口诀表。Input多个测试数据。每个测试数据一行,输入整数n.Output输出nn乘法口诀表。 每个乘法口诀表中的任何一个乘式占6列,不足6列的在后面补空格。同一行2个乘式之间有一个空格。 两个乘法口诀表之间有一个空行。注意乘法口诀中每一行最后没

2、有空格,如4*4=16和5*5=25后面都没有空格的。Sample Input126Sample Output1*1=11*1=11*2=2 2*2=41*1=1 1*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36HINT%-2d表示对齐方式为左对齐例如,printf(%-6d,100);将输出: 100#include#includeint main()int n,i,j;char a1010

3、;while(scanf(%d,&n)!=EOF)for(i=1;i=n;i+)for(j=1;j=i-1;j+)aij=j*i;printf(%d*%d=%-2d ,j,i,aij);printf(%d*%d=%-2d,i,i,i*i);printf(n);printf(n);return 0;Problem G: 打印金字塔Time Limit: 1 SecMemory Limit: 64 MBSubmit: 6241Solved: 3777Description请编写程序输出金字塔图形。Input多个测试数据。每个测试数据输入一个整数n(1 = n = 9)Output输出n层金字塔。S

4、ample Input13Sample Output* * *HINT用双重循环做,外循环代表行数,第一个内循环输出空格,第二个内循环输出*for(;)for(;)/输出空格for(;)/输出*/外循环#includeint main() int n,i,j,k;while(scanf(%d,&n)!=EOF)for(i=1;i=n;i+)for(j=1;j=n-i;j+) printf( );for(k=1;k2*i;k+) printf(*); printf(n) ; return 0;3920: 老外买瓷砖Time Limit: 1 SecMemory Limit: 64 MBSubmi

5、t: 1344Solved: 656Description大酬宾活动的第三天,店里突然来了一个老外。还是高中生的小娥在开店。可怜的小娥被老外流畅的外语给吓蒙了。老外没办法,只好一个字母一个字母地把订单念给小娥。吓蒙的小娥只记得有几个元音字母了(aeiou),不过很不幸的是她把H也当作了A,Y当作了I.Input第一行输入一个整数n,表示老外说了多少句话。然后是n行,每一行是老外说的外语。Output对于老外说的每句话,请统计出小娥记得的各元音字母的个数(包含记错的),每个元音1行,格式见例子Sample Input2Hello.How are you!Sample Outputa:1e:1i:

6、0o:1u:0a:2e:1i:1o:2u:1HINT一句话不超过50个字符#include void f(int* a,char* s) while(*s) switch(*s) case h: case H: case A: case a:a0+; break; case E: case e: a1+;break; case Y: case y: case I: case i: a2+; break; case O: case o: a3+; break; case U: case u: a4+;break; s+; int main() char s200; int a5; int n,i

7、,j; scanf(%d,&n); getchar(); for(i=0;in;i+) for(j=0;j5;j+) aj=0; gets(s); f(a,s); printf(a:%dne:%dni:%dno:%dnu:%dn,a0,a1,a2,a3,a4); return 0; Problem A: 双层金字塔Time Limit: 1 SecMemory Limit: 64 MBSubmit: 4962Solved: 3290Description输出双层金字塔。Input多个测试数据。每个测试数据输入一个整数n( 2 = n = 9) Output输出双层金字塔。Sample Inpu

8、t25Sample Output * * * * * * * * * *#include int main() int n,i,j,a,b; while(scanf(%d,&n)!=EOF) for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); for(a=1;an;a+) for(b=1;b=a;b+) printf( ); for(b=1;b=2*(n-a)-1;b+) printf(*); printf(n); return 0; 3919: 堆瓷砖Time Limit

9、: 1 SecMemory Limit: 64 MBSubmit: 1819Solved: 750Description上次来定制的客户买走了不少瓷砖,确实给公司带来了不少利润,可是望着裁剪下来的瓷砖,陈盖历发愁了。这些尺寸不一的瓷砖堆的满地都是。哎,还是想个办法把他们堆成堆吧。当然堆的时候最大的要放在下面,绝对不允许大的瓷砖放在小的上面,否则变形了下次就不好卖了。你能帮忙把这些瓷砖堆起来吗?Input第一行输入一个整数n,表示共要堆成的堆数。然后是n行,每行先输入1个整数m,表示这一堆有m块瓷砖,然后紧跟着输入m个整数,表示瓷砖的尺寸Output对于每一堆输出一行,分别是该堆的瓷砖尺寸,按照

10、从大到小进行排列,2个数之间有一个空格Sample Input24 3 4 5 63 8 4 9Sample Output6 5 4 39 8 4HINTn m 不会超过5012345678910111213141516171819202122232425262728293031323334#include int main() int n,i,j,l,a50,index,t,k; scanf(%d,&n); for(k=0;kn;k+) scanf(%d,&l); for(j=0;jl;j+) scanf(%d,&aj); for(j=0;jl;j+) index=j; for(i=j+1;

11、il;i+) if(aindexai) index=i; t=aindex; aindex=aj; aj=t; for(j=0;jl-1;j+) printf(%d ,aj); printf(%dn,al-1); return 0; 3918: 定制瓷砖Time Limit: 1 SecMemory Limit: 64 MBSubmit: 1746Solved: 1092Description新年大酬宾活动一开展,吸引了好多客户。这天来了一个客户,他有一个特别的要求。他需要定制不同尺寸的瓷砖,用来装修在杭州、临安等地买的10几套房子。他的要求是这样的,他报出房间的长与宽(当然都是整数),然后你按照他的要求给他一个瓷砖的尺寸(正方形的,也是整数),以该尺寸的瓷砖能正好铺满他要求的房间。当然他希望瓷砖的数量越少越好。ACM出身的陈盖历嘿嘿一笑,不就是求最大公约数吗?当然程序还是要你来写的。Input第一行输入一个整数n,表示客户的房间数。然后是n行,每行输入2个整数,分别表示房间的长与宽Output对于每组数据,输出一个整数,表示瓷砖的边长Sample Input26 126 8Sample Output62#include int main() int n,i,a,b,t,j,m; scanf(%d,&n); for(i=1;i=n;i+) scanf(%d%d,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号