C语言排队卖汉堡的游戏游戏

这个其实用循环或者栈写很简单而且很容易懂。而且其实就是括号匹配。
这里用递归写,递归写相对来说麻烦一点,思路如下:
用函数bg表示递归函数,该函数的作用是找到其参数n位置上的左括号所对应的右括号,然后弹出完成该层函数的递归。
每一层都需要完成这样的任务,接下来就详细说说怎么完成这个任务。
假设我们进入了c[n]所对应的左括号的递归,现在,设m处是c[n]所对应的右括号所在的位置。
那么在(n,m)这个区间中,可能有无数组下一级的匹配的括号。(所谓下一级就是指的是:比如((()())()),这一组中,一共有十个括号,第一个和第十个括号我们看做n和m,那么第二个括号,第七个括号构成了下一级的匹配的括号,第八个第九个括号构成了下一级的匹配的括号;如果把第二个和第七个看成n和m,那么第三个和第四个构成了下一级的匹配的括号,第五个和第六个构成了下一级的匹配的括号。)
还那这个例子说话,((()())()),这个例子中,把第一个和第十个看成n和m,那么下一级匹配的括号有两组,当然,我们很容易可以看出,我们还可以增加或者减少下一级匹配的括号的组数,所以说,在(n,m)这个区间中,可能有无数组下一级的匹配的括号。
因此,有我们所定义的递归函数,这里有多次平行的函数多次运行。可以理解为,一层递归函数的下一层中,有多个平行的一样的递归函数。
这个代码里,我们用循环来完成这样的平行的递归。
直到找到我们的n所对应的m,这层递归才会完成。
#include&iostream&
#include&stdio.h&
int bg(int);
char c[110] = {};
int main()
boy = c[0];
int n = strlen(c);
for (int i = 0 ; i & i ++)//遍历子付出,找到boy,girl对应的字符。
if (c[i] != boy)
girl = c[i];
int bg(int n)
if (c[n] == girl)
if (c[n] == 0)
int r = n+1;
while (c[r] != 0 && c[r] != girl)//完成平行的递归的循环,以及注意之前r=n+1,如果改成r=n就完全错了,原因在于我们每次递归完成的时候返回的是所匹配的右括号的下一个位置。
r = bg (r);
if (c[r] == girl)
cout&&n&&' '&&r&&
return r+1;
代码如下。
本文已收录于以下专栏:
相关文章推荐
直接上题:
编程题#3:排队游戏
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内...
编程题#3:排队游戏
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
...
这是NOI OPENJUDGE的一道题“全排列”,题意要求对给出的字符进行所有可能的排列,本文运用的是next_permutation函数,这个函数有很多的作用,详情请点击这里查看。
谁人低吟浅唱,檐下双色花开
回眸莞尔,一笑倾城百日香
风习袅袅,盈水展千华,飞檐亭角清铃响
总时间限制: 100ms 内存限制: 65536kB
将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1&=n2&=…&=nk&=1 ,k&=1 。
正整数n 的...
The objective of the program you are going to produce is to evaluate boolean expressions as the one ...
9273:PKU2506Tiling
总时间限制: 2000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB
对于一个2行N列的走道。现在用1*2,2*2的砖去铺...
这不是个难题,却竟然让我几次得不了满分(因为细节上的问题),前几次忘记了是怎么写的只有3分,后来忘记push_back(a[1])得5分,再后来才AC
具体的怎么想应该很清楚,对于一个状态(x,nu...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)利用c语言实现在一个3*3棋盘游戏
时间: 13:08:19
&&&& 阅读:828
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&在一个3*3矩阵中下棋,如有一方连续三颗棋子在一条直线上,则获胜。注:下棋时,输入的是棋子所对应矩阵的具体坐标。具体代码如下:#include&stdio.h&#include&stdlib.h&#include&time.h&char a[3][3]={ 0 };int size =9;void qipan() &//打印棋盘{ int i=0,j=0; printf(" & | & | & \n"); for(i=0;i&3;i++) {
printf("_%c_|_%c_|_%c_\n",a[i][0],a[i][1],a[i][2]);
printf(" & | & | & \n"); }}void &wjxq()//玩家下棋{ int m=0,n=0; printf("玩家棋子为@: ");//输入的是旗子所对应的坐标 scanf("%d %d",&m,&n); if(m&1 || m&3 || n&1 || n&3 || a[m-1][n-1]!=‘ ‘) {
printf("你输出的坐标位置不合法!");
wjxq(); } else {
a[m-1][n-1]=‘@‘;
size=size-1; } &}void dn()//电脑下棋{ int m=0,n=0; printf("电脑的棋子#:\n"); srand(time(NULL)); m=rand()%3; n=rand()%3; while(a[m][n]!=‘ ‘ ) {
m=rand()%3;
n=rand()%3; } a[m][n]=‘#‘; size=size-1;}int winner()//判断获胜者{ if((a[0][0]== a[0][1] && a[0][1]==a[0][2] && a[0][2]==‘@‘)||
(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]==‘@‘)||
(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]==‘@‘)||
(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]==‘@‘)||
(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]==‘@‘)||
(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]==‘@‘)||
(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]==‘@‘)||
(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]==‘@‘))
return 1;//玩家获胜 else if((a[0][0]==a[0][1] && a[0][1]==a[0][2] && a[0][2]==‘@‘)||
(a[1][0]==a[1][1] && a[1][1]==a[1][2] && a[1][2]==‘@‘)||
(a[2][0]==a[2][1] && a[2][1]==a[2][2] && a[2][2]==‘@‘)||
(a[0][0]==a[1][0] && a[1][0]==a[2][0] && a[2][0]==‘@‘)||
(a[0][1]==a[1][1] && a[1][1]==a[2][1] && a[2][1]==‘@‘)||
(a[0][2]==a[1][2] && a[1][2]==a[2][2] && a[2][2]==‘@‘)||
(a[0][0]==a[1][1] && a[1][1]==a[2][2] && a[2][2]==‘@‘)||
(a[0][2]==a[1][1] && a[1][1]==a[2][0] && a[2][0]==‘@‘))
return 0;//玩家输了,即电脑赢了 else if(size==0)
return -1;//平局 else
return 2;}int main(){ int i=0,j=0;//将数组初始化为空 for(i=0;i&3;i++) {
for(j=0;j&3;j++)
a[i][j]=‘ ‘;
} } while(1) {
if(winner()==-1||winner()==0||winner()==1)
if(winner()==-1||winner()==0||winner()==1)
dn(); } if(winner()==1) {
printf("玩家获胜!"); } else if(winner()==0) {
printf("玩家输了!"); } else {
printf("平局"); } system("pause"); return 0;}运行如图所示:标签:&&&&&&&&&原文:http://liu153./0306
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!登录后你可以:
首次使用?
喜欢python或者想学习python的朋友可以加QQ群:!想学习的加c++群:6 。
视频地址复制
Flash地址复制
Html地址复制
离线看更方便
用或其他应用扫描二维码
厉害了!神级程序员C语言一小时极限开发五子棋游戏!
广播电视节目制作经营许可证:(沪)字第1248号
| 网络文化经营许可证:沪网文[6号 | 信息网络传播视听节目许可证:0910417 | 互联网ICP备案:沪ICP备号-3 沪ICP证:沪B2- | 违法不良信息举报邮箱: | 违法不良信息举报电话:转3高质量C语言程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
高质量C语言程序
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 lol排队玩的游戏 的文章

 

随机推荐