|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
输入1 个正整数n(1<n<6)和n 阶整数矩阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标及鞍点值;否则,输出none; (只要求输出a的第一个鞍点)。
【输入形式】
第一行,输入一个正整数,范围2~6
第二行开始,输入n阶整数矩阵,数据项用一个空格分开
【输出形式】
如果有鞍点,输出三个整数,分别代表第一个鞍点的行下标、列下标、鞍点值,它们之间用空格分隔;如果没有鞍点,输出:none
【样例输入】
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
【样例输出】
2 1 6
- int main()
- {
- int n=0;
- scanf("%d",&n);
- fflush(stdin);
- int **a=new int*[n],*tmp=new int[n*n],(*rmax)[3]=(int(*)[3])(new int[3*n]),i=0,j=0;
- for (i = 0; i < n; i++)a[i]=tmp+i*n,\
- rmax[i][0]=rmax[i][1]=rmax[i][3]=0;
- for(i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- scanf("%d",&a[i][j]);
- }
- fflush(stdin);
- }
- for(i=0;i<n;i++)
- {
- rmax[i][0]=i;
- for(j=1;j<n;j++)
- {
- if(a[rmax[i][0]][rmax[i][1]]<a[i][j])rmax[i][1]=j;
- }
- for(j=1;j<n;j++)
- {
- if(a[rmax[i][0]][rmax[i][1]]>a[j][rmax[i][1]])break;
- }
- if(j==n)break;//if(j==n)rmax[i][2]=1;
- }
- if (n==i)
- {
- printf("none");
- }
- else
- {
- printf("%d %d %d",rmax[i][0],rmax[i][1],a[rmax[i][0]][rmax[i][1]]);
- }
- delete[] tmp;
- delete[] a;
- delete[] rmax;
- return 0;
- }
复制代码- 4
- 1 7 4 1
- 4 8 3 6
- 1 6 1 2
- 0 7 8 9
- 2 1 6
复制代码
|
|