//题目:输入1 个正整数 n (1≤n≤6)和n 阶方阵a中的元素,如果a的每一行的最大元素值都相等, 输出YES;, 否则, 输出NO。例:输入:3 -1 -2 -3 -10 -2 -1 -8 -1 -2 输出:YES
#include<stdio.h>
int k_compare(int a[6][6]);
int main()
{
int i,j,n,k;
int a[6][6];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
k=k_compare(a);
if(k==1)
printf("YES");
if(k==0)
printf("NO");
}
int k_compare(int a[6][6])
{
int i,j,k,n;
for(i=0;i<n;i++)
{
a[i][n]=a[i][0];
for(j=0;j<n;j++)
{
if(a[i][j]>=a[i][n])
a[i][n]=a[i][j];
}
}
for(i=0;i<n;i++)
{
if(a[i][n]==a[0][n])
k=1;
else
{
k=0;
break;
}
return k;
}
}
错误有点多,我列举下
改动处见注释,供参考:
#include<stdio.h>
int k_compare(int a[][7] ,int n);
int main()
{
int i,j,n,k;
int a[7][7];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
k=k_compare(a,n);
if(k==1)
printf("YES");
if(k==0)
printf("NO");
return 0;
}
int k_compare(int a[][7] ,int n)
{
int i,j,k,*max=(int*)malloc(sizeof(int)*n); //,n;
for(i=0;i<n;i++)
{
max[i] = a[i][0]; //a[i][n]=a[i][0];
for(j=0;j<n;j++)
{
if(a[i][j]>max[i])
max[i] = a[i][j]; //a[i][n]=a[i][j];
}
}
for(i=0,k=1;i<n-1;i++)
{
if (max[i] != max[i+1]) //(a[i][n]==a[0][n])
//k=1;
//else
{
k=0;
break;
}
}
return k;
}