C趣味编程百例(29)搬山游戏
90.移山游戏
有n座山,电脑和人为比赛双方轮流移山。规定搬山次数不能超过K块,谁搬最后一块谁就输。在游戏开始的时候。让计算机输入山的总数(n)和每次允许移动的山的数量(k)。然后找人开始,当有人输入要移走的山的数量时,电脑会立即打印出已经移走了多少座山,并提示还剩多少座山。双方轮流搬山,直到搬完最后一座。电脑会显示谁是获胜者,并询问人们是否想继续比赛。如果人不想玩,电脑会统计他们玩了多少局,双方如何胜负。
*问题分析与算法设计
计算机在参与游戏时应遵循以下原则:
1)何时:
剩余山数-1 2)对于任意正整数x,y,必须有:
0n||kn) /*判断移动的山数是否满足要求。\ n ");
继续;
}
n-= x;
printf("现在还剩%d座山。\n”,n);
如果(!n)
{
printf("...............我赢了。你失败了...............\ n \ n ");cc++;
}
else
{
y =(n-1)%(k+1);/*求移动的山数*/
if(!y)y = 1;
n-= y;
printf("计算机把%d座大山搬走。\n”,y);
if(n) printf("现在还剩%d座山。\n”,n);
else
{
printf("...............我是失败者。你赢了..................\ n \ n ");
pc++;
}
}
} while(n);
}
printf("总共游戏已经玩了% d . " cc+PC);
printf("你的分数是赢%d,输%d.\n ",pc,cc);
printf("我的分数是赢%d,输%d.\n ",cc,PC);
}
0条评论