当前位置: 首页 > news >正文

开设一个网站的费用/百度站长seo

开设一个网站的费用,百度站长seo,photoshop手机版免费破解版,网络架构模拟设计输入五子棋棋盘判断输赢或平局—程序设计(C语言)输入五子棋棋盘判断输赢或平局—程序设计(C语言)输入五子棋棋盘判断输赢或平局—程序设计(C语言)??做这道题实在没有思路参考了这位作者的代码:https://blog.csdn.net/jason_ranger/article/details/51250473但在提…

输入五子棋棋盘判断输赢或平局—程序设计(C语言)

输入五子棋棋盘判断输赢或平局—程序设计(C语言)

输入五子棋棋盘判断输赢或平局—程序设计(C语言)

??做这道题实在没有思路参考了这位作者的代码:

https://blog.csdn.net/jason_ranger/article/details/51250473

但在提交代码后系统只给了我8分,没有得到满分10分。

老师又要求画流程图写思路,于是就自己研究了一下。总体明白了,但有些地方还是想不通,就按照自己的想法做了一些更改。提交以后得了满分??。

自己写了一些注释,还画了一张流程图,大家可以参考一下,有错误欢迎指出。

以下是题目:

【问题描述】

已知两人分别执白棋和黑棋在一个围棋棋盘上下五子棋,若同一颜色的棋子在同一条横行、纵行或斜线上连成5个棋子,则执该颜色棋子的人获胜。编写程序读入某一时刻下棋的状态,并判断是否有人获胜。

输入的棋盘大小是19×19,用数字0表示空位置(即没有棋子),用数字 1表示该位置下了一白色棋子,用数字2表示该位置下了一黑色棋子。假设同一颜色的棋子在同一条横行、纵行或斜线上连成的棋子个数不会超过5个,并且最多有一人连成线的棋子个数为5。

【输入形式】

从控制台输入用来表示棋盘状态的数字0、1或2;每行输入19个数字,各数字之间以一个空格分隔,每行最后一个数字后没有空格;共输入19行表示棋盘状态的数字。

【输出形式】

若有人获胜,则先输出获胜人的棋子颜色(1表示白色棋子,2表示黑色棋子),然后输出英文冒号:,最后输出连成5个棋子连线的起始位置(棋盘横行自上往下、纵行自左往右从1开始计数,横行最小的棋子在棋盘上的横行数和纵行数作为连线的起始位置,两数字之间以一个英文逗号,作为分隔符)。

若没有人获胜,则输出英文字符串:No。

无论输出什么结果,最后都要有回车换行符。

【输入样例1】

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 2 0 1 1 2 0 0 0 0 0 0 0

0 0 0 0 0 2 1 1 1 1 2 2 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 2 1 2 0 0 0 0 0 0 0 0

0 0 0 0 0 0 1 1 0 2 2 0 0 0 0 0 0 0 0

0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

【输出样例1】

1:9,8

【输入样例2】

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

【输出样例2】

No

【样例说明】

在输入的样例1中,执白棋(数字1表示)的人已经获胜,连成5个棋子的起始位置在第9行第8列,所以输出1:9,8。

在输入的样例2中,还没有同一颜色的棋子连成5个,所以无人获胜,直接输出No。

【评分标准】

该题要求判断五子棋的棋盘状态,提交程序文件名为chess.c或chess.cpp。

#include

//宏定义

#define right 'r'

#define lower 'l'

#define lower_right 'i'

#define lower_left 'e'

#define none 'o'

//定义储存棋子的数组

int table[19][19];

//是否出界

int hit_space(int x, int y, char vec)

{

if (vec == right)

{

if (x - 1 >= 0 && table[x][y] == table[x + 4][y]&&x + 4 < 19 )

return 1;

}

if (vec == lower)

{

if (y - 1 >= 0 && table[x][y] == table[x][y + 4]&&y + 4 < 19)

return 1;

}

if (vec == lower_right)

{

if (x - 1 >= 0 && y - 1 >= 0 && table[x ][y ] ==table[x + 4][y + 4]&&x + 4 < 19 && y + 4 < 19 )

return 1;

}

if (vec == lower_left)

{

if (x - 1 >= 0 && y + 1 < 19 && table[x ][y ] == table[x + 4][y - 4]&&x + 4 < 19 && y - 4 >= 0)

return 1;

}

return 0;

}

//判断是否有相同的5个棋子

int tetra_colinear_on_vec(int x, int y, char vec)

{

if (vec == right)

{

//竖向的5个棋子一样返回1

if (x + 4 < 19//这里是判断最后一个棋子是否出棋盘

&& table[x][y] == table[x + 1][y]

&& table[x + 1][y] == table[x + 2][y]

&& table[x + 2][y] == table[x + 3][y]

&& table[x + 3][y] == table[x + 4][y])

return 1;

}

if (vec == lower)

{

//横向的5个棋子一样返回1

if (y + 4 < 19

&& table[x][y] == table[x][y + 1]

&& table[x][y + 1] == table[x][y + 2]

&& table[x][y + 2] == table[x][y + 3]

&& table[x][y + 3] == table[x][y + 4])

return 1;

}

if (vec == lower_right)

{

//斜向上↗5个棋子一样返回1

if (x + 4 < 19 && y + 4 < 19

&& table[x][y] == table[x + 1][y + 1]

&& table[x + 1][y + 1] == table[x + 2][y + 2]

&& table[x + 2][y + 2] == table[x + 3][y + 3]

&& table[x + 3][y + 3] == table[x + 4][y + 4])

return 1;

}

if (vec == lower_left)

{

//斜向下↘5个棋子一样返回1

if (x + 4 < 19 && y - 4 >= 0

&& table[x][y] == table[x + 1][y - 1]

&& table[x + 1][y - 1] == table[x + 2][y - 2]

&& table[x + 2][y - 2] == table[x + 3][y - 3]

&& table[x + 3][y - 3] == table[x + 4][y - 4])

return 1;

}

return 0;

}

/*

判断一个棋子哪一个方向有与它相同的5个棋子比如11111,

如果有的话返回该方向(竖向right,横向lower,斜向上LR,斜向下LL)

其他情况返回 none

*/

char tetra_colinear(int x, int y)

{

char vec;

vec = right;//right= "r"

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower_right;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower_left;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

return none;

}

//判断哪位是赢家并输出

int checkmate()

{

int i, j;

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)//遍历数组,找到连续的棋子1

{

if (table[i][j] == 1)

{

char vec = tetra_colinear(i, j);

if (vec == right || vec == lower || vec == lower_right||vec==lower_left)

{

if (hit_space(i, j, vec))

{

printf("1:%d,%d\n", i+1, j+1);

return 1;

}

}

}

}

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)

{

if (table[i][j] == 2)

{

char vec = tetra_colinear(i, j);

if (vec == right || vec == lower || vec == lower_right || vec == lower_left)

{

if (hit_space(i, j, vec))

{

printf("2:%d,%d\n", i+1, j+1);

return 1;

}

}

}

}

return 0;

}

int main()

{

int i,j;

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)//录入数组

scanf("%d",&table[i][j]);

if (!checkmate())

printf("No\n");

return 0;

}

89460dce0e4d20e1cf5373c5e1035b26.png

输入五子棋棋盘判断输赢或平局—程序设计(C语言)相关教程

http://www.jmfq.cn/news/5251555.html

相关文章:

  • 大型建设工程类考试辅导网站/谷歌seo排名技巧
  • 网站开发技术及特点/优化的含义
  • 苏州工业园区两学一做网站/整合营销传播的方法包括
  • 企业没有网站怎样做推广方案/深圳疫情最新消息
  • 企业网站建设现状/百度竞价排名怎么收费
  • 室内设计工作室网站怎么做/百度网站排名怎么提高
  • 软件网站技术开发公司/怎么自己做网站推广
  • 网站建设联/百度关键词优化专家
  • 外贸公司网站模板/百度代运营推广
  • 网站备案进度/企业网站首页
  • 南京百度网站制作/网站维护一年一般多少钱?
  • 简述建设iis网站的基本过程6/网站优化比较好的公司
  • 下载网站软件免费安装/上海公布最新情况
  • 第一个做网站的是谁/seo优化网站推广
  • 做品牌推广应该怎么做/临沂seo优化
  • 门户网站建设方案ppt/百度网页入口官网
  • 新疆建设工程云网站操作具体流程/seo引擎优化
  • 做视频网站收费标准/现在什么app引流效果好
  • 网站资源库建设报价/抖音矩阵排名软件seo
  • 贵阳哪里做网站/百度爱企查电话人工服务总部
  • 施工合同电子版/宁波百度快照优化排名
  • 广水做网站/重庆网站优化公司
  • 中国视觉设计网站/东莞网站建设市场
  • 网站怎么做app吗/营销咨询师
  • 网站建设定价/百度app推广方法
  • 武汉网址模板建站/广州网络推广平台
  • 好看的网站推荐一下/上海抖音推广
  • 做网站的参考文献有哪些/疫情优化调整
  • 西安站/在线识图
  • 网站开发与制作/西安关键词优化平台