求助各位路过的大佬帮忙看一下问题何在?
任意输入一个二维数组,如何将数组每行最大值和最小值分别放在每行的第一个位置和最后一个位置,同时保证其它元素的相对位置不发生变化?
各位路过的大佬有明白问题所在的拜托帮我看看我打的程序哪里有错,为什么总是WA?如果可以的话敬请各位大佬帮忙修改一下我的程序,万分感谢!(此题是去年学校的考试题,已经结束了)
题目描述
更多的新病毒来侵入乎优塔的身体,乎优塔派出n*n的免疫细胞方阵战斗队来应战,但是他想对战斗队重组,即:把每行免疫细胞战斗力最强的放在最前面(最左面),把每行免疫细胞战斗力最弱的放在最后面(最右面),请编程帮他实现。
输入描述:
共n + 1行,
第一行,一个整数n(2≤n≤100),表示免疫细胞战斗力的方阵大小,
接下来的n+1行,每行输入n个整数,用空格分隔,分别表示n个免疫细胞的战斗力,保证每行n个战斗力的值都是唯一的。
输出描述:
输出重组之后的免疫细胞战斗力的方阵。
示例
输入
4
1 2 3 4
7 8 2 4
5 6 7 8
4 3 2 1
输出
4 2 3 1
8 7 4 2
8 6 7 5
4 3 2 1
#include <iostream> #include <algorithm> using namespace std; int main() { int n,i,j; cin >> n; int a[101][101]; int max[101]={0}; int min[101]={0}; int b[101][101]; int c[101][101]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; b[i][j]=a[i][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { if (a[i][j] < a[i][k]) { swap(a[i][j], a[i][k]); } } } } for(int i=0;i<n;i++) { max[i]=a[i][0]; min[i]=a[i][n-1]; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(b[i][j]!=max[i]&&b[i][j]!=min[i]) c[i][j]=b[i][j]; } } for (int i = 0; i < n; i++) { cout<<max[i]<<" "; for (int j = 0; j < n; j++) { if(c[i][j]!=0) cout<< c[i][j]<<" "; } cout<<min[i]; cout<<endl; } return 0; }