賓果遊戲
A, B 兩位玩家玩賓果遊戲,每位玩家各自輸入一個 N×N的矩陣,從 數字從 1N×N,N×N 的數字選擇 M 個數字,其中 1<=M<N×N。
假設 N=3接著從 1
例如 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 玩家獲勝。
判斷勝負:
輸入說明 輸出說明
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
你题目的解答代码如下:
#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!