Description
求一个n*n数阵中的马鞍数,输出它的位置。(所谓马鞍数,是指在行上最小而在列上最大的数。)
n<=20
Input
第一行为n的值;
从第二行开始,为一个n*n的数阵;
Output
若存在马鞍数,则分两行输出马鞍数的行坐标与列坐标;否则输出“no”;
Sample Input
5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
Sample Output
1
1
能用PASCAL最好。
用C++做找马鞍数
答案:2 悬赏:10 手机版
解决时间 2021-04-06 10:00
- 提问者网友:玫瑰园
- 2021-04-05 12:45
最佳答案
- 五星知识达人网友:封刀令
- 2021-04-05 13:12
改了下,这个可以AC的
#include
int main()
{
int n, i, j, k, l, minn, maxx, flag ;
int a[20][20];
scanf("%d",&n);
for( i =0 ;i < n ;i++)
for( j =0 ;j < n; j++)
scanf("%d",&a[i][j]);
flag = 0;
for( i = 0; i < n ;i++)
{
for( j = 0; j < n; j++)
{
minn = a[i][j];
for( k = 0 ;k < n; k++)
{
if( minn > a[i][k])
break;
}
if( k == n)
{
maxx = a[i][j];
for( l = 0; l < n; l++)
{
if( maxx < a[l][j])
break;
}
if( l == n)
{
printf("%d\n%d ",i+1 , j+1 );
flag = 1;
}
}
}
}
if( flag == 0)
printf("no");
//printf("\n");
return 0;
}
#include
int main()
{
int n, i, j, k, l, minn, maxx, flag ;
int a[20][20];
scanf("%d",&n);
for( i =0 ;i < n ;i++)
for( j =0 ;j < n; j++)
scanf("%d",&a[i][j]);
flag = 0;
for( i = 0; i < n ;i++)
{
for( j = 0; j < n; j++)
{
minn = a[i][j];
for( k = 0 ;k < n; k++)
{
if( minn > a[i][k])
break;
}
if( k == n)
{
maxx = a[i][j];
for( l = 0; l < n; l++)
{
if( maxx < a[l][j])
break;
}
if( l == n)
{
printf("%d\n%d ",i+1 , j+1 );
flag = 1;
}
}
}
}
if( flag == 0)
printf("no");
//printf("\n");
return 0;
}
全部回答
- 1楼网友:轻熟杀无赦
- 2021-04-05 14:14
#include <iostream.h>
void main()
{
const int row=5,col=5;
int array[row][col];
int i,j,min_row=0,min_col=0,max,min,m,n;
int r; //这里定义r
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cin>>array[i][j];
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<array[i][j]<<" ";
cout<<endl;
}
for(m=0;m<5;m++)
{
min=array[m][0];
min_row=m;
min_col=0;
for(n=0;n<5;n++)
{
if(min>array[m][n])
{
min=array[m][n];
min_row=m;
min_col=n;
}
}
max=array[m][min_col];
for(r=0;r<5;r++) //这里改成r了
{
if(max<array[r][min_col])
max=array[r][min_col];
}
if(min==max)
cout<<"马鞍点是"<<max<<endl;
else
cout<<"no"<<endl;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯