#include
int main()
{
int a[5][5]={{1,2,5,3,7},{3,5,2,6,7},{2,8,6,5,4},{4,6,2,7,2},{2,3,1,4,5}};
int i,j,m=0,k,t=0;
int x=-1,y=-1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
m=t=0;
for(k=0;k<5;k++)
{
if(a[i][j]>a[i][k])
m++;
if(a[i][j]>a[k][j])
t++;
}
if(m==4&&t==4)
{
m=t=0;
for(k=j-1;k>1;k--)
{
if(a[i][k]>a[i][k-1])
m++;
}
for(k=j+1;k<5;k++)
{
if(a[i][k]>a[i][k+1])
t++;
}
if(m==j-2&&t==5-j-1)
{
m=t=0;
for(k=i-1;k>1;k--)
{
if(a[k][j]>a[k-1][j])
m++;
}
for(k=i+1;k<5;k++)
{
if(a[k][j]>a[k+1][j])
t++;
}
if(m==i-2&&t==5-i-1)
{
x=i+1;
y=j+1;
printf("皇宫的位置可以为:(%d,&d)",x,y);
}
}
}
}
}
if(x==-1&&y==-1)
printf("该地区没有位置可以建立皇宫");
return 0;
} #include
int main()
{
int a[5][5]={{1,2,5,3,7},{3,5,2,6,7},{2,8,6,5,4},{4,6,2,7,2},{2,3,1,4,5}};
int i,j,m=0,k,t=0;
int x=-1,y=-1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
m=t=0;
for(k=0;k<5;k++)
{
if(a[i][j]>a[i][k])
m++;
if(a[i][j]>a[k][j])
t++;
}
if(m==4&&t==4)
{
m=t=0;
for(k=j-1;k>1;k--)
{
if(a[i][k]>a[i][k-1])
m++;
}
for(k=j+1;k<5;k++)
{
if(a[i][k]>a[i][k+1])
t++;
}
if(m==j-2&&t==5-j-1)
{
m=t=0;
for(k=i-1;k>1;k--)
{
if(a[k][j]>a[k-1][j])
m++;
}
for(k=i+1;k<5;k++)
{
if(a[k][j]>a[k+1][j])
t++;
}
if(m==i-2&&t==5-i-1)
{
x=i+1;
y=j+1;
printf("皇宫的位置可以为:(%d,&d)",x,y);
}
}
}
}
}
if(x==-1&&y==-1)
printf("该地区没有位置可以建立皇宫");
return 0;
}
能帮我看看判断那里出问题了,出来的结果错了。
把问题转化为每一个坐标按行与列的比较。
我试着写了一个。