强啊,中文的我都看不太明白
" target="_blank">[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
帮我编一下这个程序,高手!!! 搬山游戏
设有n座山,计算机与人作为比赛的双方,双方轮流搬山。规定每次搬山的数目不能超过k座,谁搬最后一座谁输。游戏开始时,计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。然后请人先开始,人输入了需要搬走的山的数目后,计算机马上输出它搬多少座山,并提示尚余多少座山。双方轮流搬山直到最后一座山搬完为止。计算机显示谁是赢家,并问人是否要继续比赛。若人不想玩了,可以输入山的总数为0,计算机便会告诉人共完了几局,双方胜负如何。 解决这类问题的基本方法是先进行分析,找出游戏对弈的规律性,然后让计算机按照游戏的规则,模拟人进行游戏。这类程序中计算机游戏水平的高低,实际上取决于程序设计者对游戏规律的认识。 首先设计计算机参加游戏的算法,计算机每次搬山时应遵循如下原则: (1) 当:剩余山的数目-1<=可移动的最大数k时,计算机要移(剩余山的数目-1)座,以便将最后一座山留给人。 (2) 对于任意正整数x, y,一定有: 0<=x%(y+1)<=y 因此,对于我们的问题来说,在有n座山的情况下,计算机为了将最后一座山留给人,而且又要控制每次搬山的数目不超过最大数k,它应搬山的数目要满足下列关系: 搬山数量=(当前所剩的山数-1)%(k+1) 如果算出结果为0,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。