zoukankan      html  css  js  c++  java
  • 五子棋(五连)

    时限:1000ms 内存限制:10000K  总时限:3000ms

    描述:

    在五子棋对战中,我们有以下相关术语: 〖阳线〗即:直线,棋盘上可见的横纵直线。 〖阴线〗即:斜线,由交叉点构成的与阳线成45凹薪堑囊涡毕摺? 〖五连〗只有五枚同色棋子在一条阳线或阴线上相邻成一排。 〖长连〗五枚以上同色棋子在一条阳线或阴线上相邻成一排。 五连也是五子棋的胜利条件。 此题要求同学们编写程序,判断在给定点放给定颜色的子后是否会有五连这种棋型出现。

    输入:

    对于本题,首先读入的是当前棋盘的状态,共15行,每行15个数字,1代表白棋,2代表黑棋,0代表为空格(未下子)。第16行有3个数字R,C,N代表给定点的行、列和放子的颜色。

    输出:

    若出现则输出Yes,否则输出No.

    输入样例:

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    1 1 1 0 0 0 0 0 0 0 2 2 0 0 1
    0 2 2 2 0 0 0 0 2 0 0 0 0 0 1
    0 1 0 1 1 0 2 0 2 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 2 0 0 1 0 0 0
    2 0 0 0 0 1 0 0 0 0 0 0 0 0 0
    2 0 0 0 0 0 0 0 0 1 0 1 0 0 0
    2 0 0 0 0 0 0 1 0 0 0 0 0 0 0
    2 0 0 0 0 0 0 2 1 0 0 0 0 1 0
    0 0 0 0 0 0 2 2 0 0 0 0 1 0 0
    2 0 0 0 0 2 0 0 0 0 0 1 0 0 0
    0 2 0 1 1 0 0 2 0 0 0 0 0 0 0
    0 0 2 0 0 0 0 0 0 1 0 0 0 0 0
    0 2 2 2 2 0 0 0 1 0 0 0 0 0 0
    1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
    14 4 1

    输出样例:

    Yes

    提示:

    注意阴线,阳线一起判断。 长连和五连的区分

    #include<stdio.h>
    int main()
    {
        int i,j,k=0,count[4]={0};
        int R,C,N;
        int Arr[15][15]={0};
        for(i=0;i<15;i++)
           for(j=0;j<15;j++)
              scanf("%d",&Arr[i][j]);
    
        scanf("%d%d%d",&R,&C,&N);
        Arr[R][C]=N;
        for(j=C;j<15;j++)//横向
            if(Arr[R][j]==Arr[R][C]) count[0]++;
            else break;
        for(j=C-1;j>=0;j--)
            if(Arr[R][j]==Arr[R][C]) count[0]++;
            else break;
       for(i=R;i<15;i++)//纵向
            if(Arr[i][C]==Arr[R][C]) count[1]++;
            else break;
        for(i=R-1;i>=0;i--)
            if(Arr[i][C]==Arr[R][C]) count[1]++;
            else break;
        for(i=R,j=C;i>=0,j>=0;i--,j--)//斜左
            if(Arr[i][j]==Arr[R][C]) count[2]++;
            else break;
        for(i=R+1,j=C+1;i<15,j<15;i++,j++)
            if(Arr[i][j]==Arr[R][C]) count[2]++;
            else break;
        for(i=R,j=C;i>=0,j<15;i--,j++)//斜右
            if(Arr[i][j]==Arr[R][C]) count[3]++;
            else break;
        for(i=R+1,j=C-1;i<15,j>=0;i++,j--)
            if(Arr[i][j]==Arr[R][C]) count[3]++;
            else break;
    
        if(count[0]==5||count[1]==5||count[2]==5||count[3]==5) 
            printf("Yes\n");
        else  printf("No\n");
        return 0;
    }

     

     

  • 相关阅读:
    Ubuntu16.04 LTS 安装VNC Server开启远程桌面
    duilib List右键菜单的响应
    centos bootloader安装到u盘后修复方法
    dpkg: error processing package XXX (--configure) 解决方法 (ubuntu右上角红色警告)
    linux centos ftp服务器搭建
    windows 端口转发 netsh
    遍历windows窗口
    解除文件占用
    VS 运行库MT、MD的区别
    点击显示桌面的窗口状态
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2584449.html
Copyright © 2011-2022 走看看