一种C语言矩阵旋转但是有的答案一直segmentation fault段错误找不到问题
Input
有多组输入。
每组输入先输入一个整数N(N <= 50),代表矩阵的大小。
接下来的N行,每行有N个整数。代表矩阵A。
再接下来的N行N个整数代表矩阵B。
Output
如果矩阵A在旋转一定角度后能和矩阵B完全一样则输出YES,否则输出NO。
#include
int main()
{
int N,a[50][50],b[50][50],i,j,k,s,t=0;
while(scanf("%d",&N)!=EOF)
{
for(i=0;ifor(j=0;j"%d",&a[i][j]);
}
}
for(i=0;ifor(j=0;j"%d",&b[i][j]);
}
}
for(k=1;k<4;k++)
{
for(j=0;jfor(i=N-1;i>=0;i--)
{
if(a[i][j]==b[t][j])
s++;
t++;
}
}
if(s==N*N)
break;
}
if(k<4)
printf("YES");
else
printf("NO");
}
}
真不知道这段错误是什么,唔。
望采纳。你的代码中存在一些问题。
修改后的完整代码如下:
#include<stdio.h>
int main()
{
int N, a[50][50], b[50][50], i, j, k, s, t;
while (scanf("%d", &N) != EOF)
{
// 读入矩阵A
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
scanf("%d", &a[i][j]);
}
}
// 读入矩阵B
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
scanf("%d", &b[i][j]);
}
}
// 枚举旋转角度
for (k = 1; k < 4; k++)
{
// 将变量s设为0
s = 0;
// 枚举矩阵B的行
for (j = 0; j < N; j++)
{
// 将变量t设为0
t = 0;
// 枚举矩阵A的列
for (i = N - 1; i >= 0; i--)
{
// 如果矩阵A和矩阵B的对应元素相同,则将s的值加1
if (a[i][j] == b[t][j])
{
s++;
}
// 将t的值加1
t++;
}
}
// 如果矩阵A和矩阵B完全一样,则退出循环
if (s == N * N)
{
break;
}
}
// 判断是否成功
if (k < 4)
{
printf("YES");
}
else
{
printf("NO");
}
}
return 0;
}
for(k=1;k<4
明明都是N,为啥是4?