Description
小理确证了新型病毒阳性,现在被拉去方舱医院进行集中隔离。
医生现在让每个人站在一起,站成了n*n的矩阵。
小理突然发现这个矩阵里有几个「刺头」。刺头指的是其身高是所在行的最大值,但是是所在列的最小值。这些人对矩阵的美观产生了影响。对方舱医院的正能量宣传影响不好。
小理希望你能帮助他把这些「刺头」找出来。输出这些刺头所在的行、列及其值。如果找不到刺头则输出Not found。
Input
输入共n+1行,其中第一行为一个正整数n,n不超过10。
接下来n行,每行输出n列数,这些数表示矩阵中每个人的身高。这些数不超过200。
Output
如果存在「刺头」则依次输出刺头所在的行、列与值(按照行从小到大的顺序)。
如果不存在,输出Not found。
Sample Input 1
5
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
Sample Output 1
4 1 8
题解
思路:
#include
typedef struct tartar{
int row;//行
int column;//列
int value;
}tartar;
int main(){
int n;
scanf("%d",&n);
int matrix[n][n];
int rowMax[10] = {0};
int columnMin[10] = {201,201,201,201,201,201,201,201,201,201};
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&matrix[i][j]);
}
}
//找出行最大
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]>rowMax[i]){
rowMax[i] = matrix[i][j];
}
}
}
//找出列最小
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(matrix[j][i]<columnMin[i]){
columnMin[i] = matrix[j][i];
}
}
}
/*
for(int i=0;i
//刺头数组
tartar res[10];
int count = 0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]==rowMax[i]&&matrix[i][j]==columnMin[j]){
res[count].column = j+1;
res[count].row = i+1;
res[count].value = matrix[i][j];
count++;
}
}
}
if(count==0){
printf("Not found");
}else{
for(int i=0;i<count;i++){
printf("%d %d %d",res[i].row,res[i].column,res[i].value);
if(i!=count-1){
printf("\n");
}
}
}
return 0;
}

