《算法设计与分析》实验报告实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉工程大学计算机科学与工程学院
《算法设计与分析》实验报告
实验内容
(2)猴子吃桃子问题,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了两个,第二天早上又将剩下的桃子吃掉一半,又多吃了两个,以后每天早上都吃了前一天剩下的一半零两个,到了第10天早上想再吃时,就只剩下两个桃子了,问第一天猴子摘了多少桃子?代码:
#include
void main()
{
int a=2,i;
for(i=8;i>=0;i--)
a=(a+2)*2;
printf("第一天猴子摘下%d个桃子\n",a);
}
测试:
(3)54张扑克牌,两个人轮流拿牌,每人每次最少取一张牌最多取4张牌,谁拿最后一张谁输。编写模拟计算机先拿牌且必胜的算法。
代码:
#include
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
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
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");
}
}