鞍点
#include <iostream> #include <cmath> #include<vector> #include <algorithm> using namespace std; const int N = 5000; int a[N][N]; int main() { vector<int> v1,v2; for(int i=0;i<5;i++) for(int j=0;j<5;j++) cin>>a[i][j]; int index1=-99999,index2=99999; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { if(a[i][j]>index1) { index1 = a[i][j]; } } v1.push_back(index1); index1 = -99999; } for(int j=0;j<5;j++) { for(int i=0;i<5;i++) { if(a[i][j]<index2) { index2 = a[i][j]; } } v2.push_back(index2); index2 = 99999; } int flag = 1; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { if(v1[i]==v2[j]) { flag = 0; cout<<i+1<<" "<<j+1<<" "<<v1[i]<<endl; break; } } } if(flag) cout<<"not found"<<endl; return 0; }
#include <stdio.h> #define N 5 int a[N][N]; int max[N], min[N]; int main(void) { int i, j; for(i=0; i<N; i++) for(j=0; j<N; j++) scanf("%d", &a[i][j]); // 设置初始值 for(i=0; i<N; i++) { max[i] = -1; min[i] = ~((unsigned int) 0) >> 1; } // 求行的最大值, 列的最小值 for(i=0; i<N; i++) for(j=0; j<N; j++) { if(a[i][j] > max[i]) max[i] = a[i][j]; if(a[i][j] < min[j]) min[j] = a[i][j]; } // 比较最大值和最小值,输出结果 int flag = 1; for(i=0; i<N; i++) for(j=0; j<N; j++) if(max[i] == min[j]) { flag = 0; printf("%d %d %d\n", i + 1, j + 1, max[i]); break; } if(flag) printf("not found\n"); return 0; }