1970

#include <iostream>

using namespace std;

int main ()
{
 int i, j, k, l;//用与循环的变量
 int count;     //棋盘的个数
 int map[22][22];//棋盘
 int same;      //连续相同的个数
 int winner = 0;  //获胜者
 int row;         
 int column;

 cin >> count;
 while (count--)
 {
  row = -1;
  column = -1;
  memset(map, 0, sizeof(map));
  for (i = 1; i < 20; i++)
   for (j = 1; j < 20; j++)
    cin >> map[i][j];

  //判断横排是否有五个相连
  for (i = 1; i < 20; i++)
   for (j = 1; j < 16; j++)
   {
    if (map[i][j] == 0)
     continue;
    same = 1;
    k = j + 1;
    while (k <= 19 && map[i][j] == map[i][k])//判断横排中有无5个连续相同
    {
     same++;
     k++;
    }
    if (same == 5 && map[i][j] != map[i][j-1])
    {
     row = i;
     column = j;
     winner = map[i][j];
     break;
    }
   }
  //判断竖排是否有五个相连
  if (same != 5)
  {
   for (j = 1; j < 20; j++)
    for (i = 1; i < 16; i++)
    {
     if (map[i][j] == 0)
      continue;
     same = 1;
     k = i + 1;
     while (k <= 19 && map[i][j] == map[k][j])
     {
      same++;
      k++;
     }
     if (same == 5 && map[i][j] != map[i-1][j])
     {
      row = i;
      column = j;
      winner = map[i][j];
      break;
     }
    }
  }

  //判断右下是否有五个相连
  if (same != 5)
  {
   for (i = 1; i < 16; i++)
    for (j = 1; j < 16; j++)
    {
     if (map[i][j] == 0)
      continue;
     same = 1;
     k = i + 1;
     l = j + 1;
     while (k <= 19 && l <= 19 && map[i][j] == map[k][l])
     {
      same++;
      k++;
      l++;
     }
     if (same == 5 && map[i][j] != map[i-1][j-1])
     {
      row = i;
      column = j;
      winner = map[i][j];
      break;
     }
    }
  }

  //判断右上是否有五个相连
  if (same != 5)
  { 
   for (i = 5; i < 20; i++)
    for (j = 1; j < 16; j++)
    {
     if (map[i][j] == 0)
      continue;
     same = 1;
     k = i - 1;
     l = j + 1;
     while (k >= 0 && l <= 19 && map[i][j] == map[k][l])
     {
      same++;
      k--;
      l++;
     }
     if (same == 5 && map[i][j] != map[i+1][j-1])
     {
      row = i;
      column = j;
      winner = map[i][j];
      break;
     }
    }
  }
 if (winner != 0 && row != -1 && column != -1)
 {
  cout << winner << endl;
  cout << row << " " << column << endl;
 }
 else
  cout << 0 << endl;
 }

 return 0;                                        
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值