7-3 祖玛
《祖玛》是由Popcap Games于2004年01月01日开放的一款益智小游戏。游戏目标是尽量消除珠子,以防止珠子滚入轨迹尽头的洞中。
游戏的主角是一只石青蛙,石青蛙会吐出各种颜色的珠子,珠子造型美丽,色彩鲜艳,环绕着石青蛙的是承载珠子的轨道,各种颜色的珠子沿着轨道往前滑动,石青蛙必需遏止珠子滚进轨道终点的洞穴。石青蛙吐出的珠子与轨道上的珠子相结合,颜色相同即可消失得分,当轨道上的所有珠子被消除干净时即取得游戏的胜利。
游戏创意虽较简单;但难度不凡。屏幕中的石头青蛙会吐出颜色各异的珠子,与沿着一条轨迹运行的一串珠子相接,一旦三颗或以上的珠子连在一起,则这几颗珠子即可消失,而且可以产生连锁反应。我们所要做的就是尽量消除珠子,以防止珠子滚入轨迹尽头的洞中。珠子落入洞中即为输掉,所有珠子都消失则为获胜。 现在我们用字符表示珠子,其中r代表红色珠子,b代表蓝色珠子,g代表绿色珠子,y代表黄色珠子;用一个字符串代表轨迹中当前各个珠子;用整数代表青蛙吐出的珠子发射到轨迹中的位置,如1代表放到最前边,2代表放到第一个珠子后边等等。则珠子消失的规则如下:1、当青蛙吐出的珠子到位后,如果与之相邻的珠子颜色与之相同且连续超过3个(包括青蛙吐出的这颗珠子),则所有这些颜色相同且连续的珠子都消失。例如青蛙吐出的珠子为红色,吐到轨迹上的位置为3,轨迹上的珠子为bbrr,则吐出的珠子到位后轨迹上的珠子状态应为bbrrr,三颗红色珠子符合消失条件,要消失,最终轨迹上剩下两颗蓝色的珠子,即bb。在这个例子中吐到轨迹上的位置为3、4或5结果都是一样的,如果为2,则最终的输出结果应为brbrr。2、连锁反应规则为当第一次消失发生后,剩下的两段珠子自然相接,如果相接的两个珠子颜色相同且连续超过三个(包括相接的两个珠子),则这些连续且颜色相同的珠子消失。例如青蛙吐出的珠子为红色,吐到轨迹上的位置为5,轨迹上的珠子为bbggrrrgbbyyy则最终轨迹上应为3颗黄色的珠子。过程为新的红色的珠子加入后导致中间的红色珠子满足消失条件,消失了;红色珠子消失后中间的绿色珠子自然相接,满足连锁反应条件,这些绿色珠子也消失了,同理蓝色的珠子也消失的,最后只剩下3颗黄色的珠子,即yyy。特别要注意的是这里的三颗黄色的珠子虽然数量上够了,但由于未与其他同颜色的珠子相接,所以不满足消失的条件。同样,轨迹上其他地方如果还有连续超过3个眼色相同的珠子(原有的)也不能消失。 现在就请你写一段程序来实现这些游戏规则。
注意:打表过测试用例不给分。
输入格式:
只有一行,分三段,开始是一个字符接着是一个整数,最后是一个字符串。字符代表青蛙吐出的珠子的颜色;整数代表青蛙图出的珠子发射到轨迹中的位置,如1代表放到最前边,2代表放到第一个珠子后边等等;字符串代表轨迹中当前的珠子及相应位置。测试数据保证字符串长度小于100,且其他输入合法。
输出格式:
也只有一行,为青蛙吐出珠子后轨道上珠子的状态,如果轨道上所有的珠子都消失了则输出win。
输入样例:
r 5 bbggrrrgbbyyy
输出样例:
yyy
代码实现:
#include
#include
int main()
{char ch;int n;char s[100];scanf("%c",&ch);scanf("%d",&n);scanf("%s",s);int len=strlen(s);if(n>len+1){n=len+1;}if(n<1){n=1;}for(int i=len;i<100;i++){s[i]='\0';}for(int i=len;i>=n;i--)//插入字符ch{s[i]=s[i-1]; }s[n-1]=ch;int startLoc=n-1;//同颜色珠子的起始位置int endLoc;//同颜色珠子的终止位置do{while(s[startLoc-1]==s[startLoc]){startLoc--;}endLoc=startLoc;while(s[endLoc]==s[endLoc+1]){endLoc++;}if(endLoc-startLoc>=2)//消除珠子{for(int i=startLoc;i<=len;i++){s[i]=s[i+endLoc-startLoc+1];}}}while(startLoc>0&&s[startLoc-1]==s[startLoc]);//startLoc>0必须在前面,否则数组越界if(strlen(s)!=0){printf("%s\n",s);}else{printf("win\n");}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
