bol_in 2022-06-24 03:04 采纳率: 64.6%
浏览 26
已结题

賓果遊戲 A, B 兩位玩家玩賓果遊戲

賓果遊戲
A, B 兩位玩家玩賓果遊戲,每位玩家各自輸入一個 N×N的矩陣,從 數字從 1N×N,
假設 N=3接著從 1
N×N 的數字選擇 M 個數字,其中 1<=M<N×N。
例如 M=4,四個數字是 6, 1, 7, 3。則 A, B 玩家的矩陣分別為:
6 1 8 9 6 4
4 7 2 5 1 8
5 9 3 2 7 3
輸入到7時,B玩家先達成1條連線,A玩家還沒連線,因此 B 玩家獲勝。
判斷勝負:

  1. M 個數字依序出現在任一玩家矩陣中連成一條對角線、垂直線,或水平線,先連成線的玩家獲勝。
  2. 若兩位玩家同時連線,或都沒有連線,則平手。

輸入說明 輸出說明
Line 1, 整數 N M
Line 2, A的 N×N 個數字
Line 3, B 的 N×N 個數字
Line 4, M 個數字
A玩家獲勝,輸出A Win
B玩家獲勝,輸出 B Win
平手輸出 Tie

Sample Input 1: B Win
3 4
6 1 8 4 7 2 5 9 3
9 6 4 5 1 8 2 7 3
6 1 7 3
Sample Output 1:
B Win

Sample Input 2: A Win
3 7
1 2 3 4 5 6 7 8 9
2 3 4 5 1 6 9 7 8
7 2 3 6 9 8 4
Sample Output 2:
A Win

Sample Input 3:A, B 同時連線
3 5
1 2 3 4 5 6 7 8 9
5 7 4 6 8 2 1 9 3
1 2 5 4 8
Sample Output 3:
Tie

Sample Input 4:A, B 皆未連線
4 8
16 6 11 5 10 4 13 3 14 15 9
12 7 2 8 1
8 1 3 11 12 5 14 9 13 4 6 2
15 16 7 10
9 1 3 5 7 8 10 13
Sample Output 4:
Tie

  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #define N 100
    
    int mp(int a[N][N], int c[], int n,int m)
    {
        int k,i,j;
        for(k=0;k<=m-n;k++)
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                    if (a[i][j] != c[k+j])
                        break;
                if (j==n)
                    return 1;
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                    if (a[j][i] != c[k+j])
                        break;
                if (j==n)
                    return 1;
            }
            for(j=0;j<n;j++)
                if (a[j][j] != c[k+j])
                    break;
            if (j==n)
                return 1;
            for(j=0;j<n;j++)
                if (a[j][n-1-j] != c[k+j])
                    break;
            if (j==n)
                return 1;
        }
        return 0;
    }
    int main() {
        int a[N][N];
        int b[N][N];
        int i,j,n,m,d1,d2;
        scanf("%d%d", &n, &m);
        int c[m];
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                scanf("%d", &a[i][j]);
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                scanf("%d", &b[i][j]);
        for(i=0;i<m;i++)
            scanf("%d", &c[i]);
        d1 = mp(a, c, n, m);
        d2 = mp(b, c, n, m);
        if (d1==1 && d2==0)
            printf("A Win\n");
        else if (d1==0 && d2==1)
            printf("B Win\n");
        else
            printf("Tie\n");
        return 0;
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 6月24日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络