鞍點計算
Time Limit: 1000ms Memory limit: 65536K 有疑問?點這裏^_^
題目描述
找出具有m行n列二維數組Array的“鞍點”,即該位置上的元素在該行上最大,在該列上最小,其中1<=m,n<=10。
輸入
輸入數據有多行,第一行有兩個數m和n,下面有m行,每行有n個數。
輸出
按下列格式輸出鞍點:
Array[i][j]=x
其中,x代表鞍點,i和j爲鞍點所在的數組行和列下標,我們規定數組下標從0開始。
一個二維數組並不一定存在鞍點,此時請輸出None。
我們保證不會出現兩個鞍點的情況,比如:
3 3
1 2 3
1 2 3
3 6 8
Array[i][j]=x
其中,x代表鞍點,i和j爲鞍點所在的數組行和列下標,我們規定數組下標從0開始。
一個二維數組並不一定存在鞍點,此時請輸出None。
我們保證不會出現兩個鞍點的情況,比如:
3 3
1 2 3
1 2 3
3 6 8
示例輸入
3 3 1 2 3 4 5 6 7 8 9
示例輸出
Array[0][2]=3
///應該把每行所在的第一個數字定義爲max(自己在這裏出錯了,把a[0][0]定義成max,再用的循環導致出錯)
- #include<stdio.h>
- int main()
- {
- int n, m, a[20][20], ii, jj, l, max, min;
- while(~scanf("%d%d", &n, &m))
- {
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<m; j++)
- {
- scanf("%d", &a[i][j]);
- }
- }
- int i=0, j=0;
- for(i=0; i<n; i++)
- {
- max=a[i][0];
- for(int j=0; j<m; j++)
- {
- if(a[i][j]>max)
- {
- max=a[i][j];
- ii=i;
- jj=j;
- }
- }
- l=0;
- min=max;
- for(int t=0; t<n; t++)
- {
- if(a[t][jj]<min)
- {
- min=a[t][jj];
- }
- }
- if(min==max)
- {
- printf("Array[%d][%d]=%d", ii, jj, max);
- l=1;
- break;
- }
- }
- if(l==0)
- printf("None\n");
- printf("\n");
- }
- return 0;
- }