网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月18日漏签0天
c语言吧 关注:801,550贴子:4,373,493
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回c语言吧
>0< 加载中...

c语言 五子棋危险判断 求大神解释啊

  • 取消只看楼主
  • 收藏

  • 回复
  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
c语言小白,从网上看到这个题和代码,不太懂,求大神给解释下思路,各函数作用还有一些小细节啥的,跪谢了


  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码
#include <stdio.h>
#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 - 1][y] == 0)
return 1;
if (x + 4 < 19 && table[x + 4][y] == 0)
return 1;
}
if (vec == lower)
{
if (y - 1 >= 0 && table[x][y - 1] == 0)
return 1;
if (y + 4 < 19 && table[x][y + 4] == 0)
return 1;
}
if (vec == lower_right)
{
if (x - 1 >= 0 && y - 1 >= 0 && table[x - 1][y - 1] == 0)
return 1;
if (x + 4 < 19 && y + 4 < 19 && table[x + 4][y + 4] == 0)
return 1;
}
if (vec == lower_left)
{
if (x - 1 >= 0 && y + 1 < 19 && table[x - 1][y + 1] == 0)
return 1;
if (x + 4 < 19 && y - 4 >= 0 && table[x + 4][y - 4] == 0)
return 1;
}
return 0;
}
int tetra_colinear_on_vec(int x, int y, char vec)
{
if (vec == right)
{
if (x + 3 < 19
&& table[x][y] == table[x + 1][y]
&& table[x + 1][y] == table[x + 2][y]
&& table[x + 2][y] == table[x + 3][y])
return 1;
}
if (vec == lower)
{
if (y + 3 < 19
&& table[x][y] == table[x][y + 1]
&& table[x][y + 1] == table[x][y + 2]
&& table[x][y + 2] == table[x][y + 3])
return 1;
}
if (vec == lower_right)
{
if (x + 3 < 19 && y + 3 < 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])
return 1;
}
if (vec == lower_left)
{
if (x + 3 < 19 && y - 3 >= 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])
return 1;
}
return 0;
}
char tetra_colinear(int x, int y)
{
char vec;
vec = right;
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++)
{
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;
}


2025-12-18 00:07:53
广告
不感兴趣
开通SVIP免广告
  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
受累看下原链接:https://blog.csdn.net/jason_ranger/article/details/51250473


  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶顶


  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
dd


  • 低调路过的网友
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
dd


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示