1200华中科技

来源:互联网 发布:新通用顶级域名 编辑:程序博客网 时间:2024/04/27 17:30

//输出要求很多

   如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。
    输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){   int n;   int nums[4][5];   int ans[2][5];   int tem[4];   while(scanf("%d",&n)!=EOF){   for(int i = 1;i<=n;i++){      for(int j = 0;j<4;j++)  for(int k = 0;k<5;k++)  scanf("%d",&nums[j][k]);  for(int j = 0;j<5;j++){              for(int k = 0;k<4;k++)  {     tem[k] = nums[k][j];  }  sort(tem,tem+4);//进行排序后              //找第一大和第二大的下标  int index1 = 0;  int index2 = 0;  int flag1 = 0;  int flag2 = 0;  for(int k = 0;k<4;k++){  if(nums[k][j]==tem[2]){  if(!flag2){//值相同则按行值小的     index2 = k;         flag2 = 1;  }  }  if(nums[k][j]==tem[3]){ if(!flag1){     index1 = k;         flag1 = 1;  }       }  }  if(index2<=index1)  {      ans[0][j] = tem[2];  ans[1][j] = tem[3];  }else  {      ans[0][j] = tem[3];  ans[1][j] = tem[2];  }  }  for(int j = 0;j<2;j++){  for(int k = 0;k<5;k++){     printf("%d ",ans[j][k]);  }              printf("\n");   }   }   }}


0 0
原创粉丝点击