#include<stdio.h> #include<string.h> #include<stdlib.h>//位运算 #include<stdio.h> const int maxn = 10010; int arr[maxn][maxn]; int brr[maxn][maxn]; int min = 0; int main() { int m = 0, n = 0; int i = 0, j = 0; int a = 0, b = 0; scanf("%d %d", &m, &n); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { brr[i][j] = 0; } } for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &arr[i][j]); } } for (i = 0; i < m; i++) { min = arr[i][0]; for (j = 0; j < n; j++) { if (arr[i][j] <= min) { min = arr[i][j]; a = i, b = j; } } //把i,j赋值给数组 brr[a][b] = 1; } //现在找到每一行的最小值了 //若i=a,j=b;则找该列是否有数值大于它的,如果大于,则置为0 //遍历列的话,第二维置为0,行循环 //固定列为b for(i=0;i<n;i++) for(int j=0;j<m;j++){ if(brr[i][j]==1) for(int a=0;a<n;a++) if(arr[a][j]>arr[i][j]) brr[i][j]=0; } for(i=0;i<n;i++) for(j=0;j<m;j++) if(brr[i][j]==1) printf("%d %d",i+1,j+1); } |
Double click to view unformatted code.