《算法设计与分析》实验报告实验二
- 格式:doc
- 大小:196.50 KB
- 文档页数:8
武汉工程大学计算机科学与工程学院
《算法设计与分析》实验报告
实验内容
(2)猴子吃桃子问题,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了两个,第二天早上又将剩下的桃子吃掉一半,又多吃了两个,以后每天早上都吃了前一天剩下的一半零两个,到了第10天早上想再吃时,就只剩下两个桃子了,问第一天猴子摘了多少桃子?代码:
#include<stdio.h>
void main()
{
int a=2,i;
for(i=8;i>=0;i--)
a=(a+2)*2;
printf("第一天猴子摘下%d个桃子\n",a);
}
测试:
(3)54张扑克牌,两个人轮流拿牌,每人每次最少取一张牌最多取4张牌,谁拿最后一张谁输。
编写模拟计算机先拿牌且必胜的算法。
代码:
#include<stdio.h>
void main()
{
int a,b,c,d,e,f;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
if(b!=a)
for(c=0;c<=9;c++)
if(c!=a&&c!=b)
for(d=0;d<=9;d++)
if(d!=a&& d!=b && d!=c)
{
e=a*1000+b*100+c*10+d;
f=(a+b+c+d)*(a+b+c+d);
if(e%f==0)
printf("%d%d%d%d\t",a,b,c,d);
}
printf("\n");
}
测试:
(8)寻找满足下列条件的四位数字:1.无重复数字;2.千位数字非零;3.能整除它的各个位数字和的平方。
代码:
#include<stdio.h>
void main()
{
int i,c;
printf("游戏开始,计算机先拿牌!\n");
c=51;
printf("计算机拿3张!还剩%d张\n",c);
while(c>1)
{
printf("请你拿牌,选择拿牌的张数(1-4张)\n");
scanf("%d",&i);
c=c-5;
printf("计算机拿了%d张,还剩%d张\n",5-i,c);
}
printf("你拿最后一张,计算机赢了!\n");
}
测试:
#include<stdio.h>
int amount=0, Board[100][100];
void Cover(int tr, int tc, int dr, int dc, int size); void OutputBoard(int size);
void main()
{
int size=1,x,y,k,i;
printf("输入K值:");
scanf("%d",&k);
for (i=1;i<=k;i++)
size=size*2;
printf("输入残缺个的位置x,y:");
scanf("%d%d",&x,&y);
Cover(0, 0, x, y, size);
OutputBoard(size);
Cover (tr, tc, tr+s-1, tc+s-1, s); //覆盖其余部分
Cover (tr, tc+s, tr+s-1, tc+s, s);
Cover(tr+s, tc, tr+s, tc+s-1, s);
}
}
void OutputBoard(int size)
{
for (int i = 0; i < size; i++)
{
for(int j=0; j < size; j++)
printf("%-4d",Board[i][j]);
printf("\n");
}
}。