- 题目描述:
输入一个N(N<=10)阶方阵,按照如下方式调整方阵:
1.将第一列中最大数所在的行与第一行对调。
2.将第二列中从第二行到第N行最大数所在的行与第二行对调。
依此类推...
N-1.将第N-1列中从第N-1行到第N行最大数所在的行与第N-1行对调。
N.输出这个方阵
- 输入:
包含多组测试数据,每组测试数据第一行为一个整数N,表示方阵的阶数.
接下来输入这个N阶方阵.
- 输出:
调整后的方阵
- 样例输入:
4
3 6 8 7
6 7 5 3
8 6 5 3
9 8 7 2
- 样例输出:
9 8 7 2
6 7 5 3
3 6 8 7
8 6 5 3 本来很简单的题,但想尝试一下索引的办法,
代码如下#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std; int num[][];
int myIndex[]; int main() {
int n;
while (scanf("%d", &n) != EOF && n != ) {
for (int i = ; i < n; i++) {
for (int j = ; j < n; j++) {
scanf("%d", &num[i][j]);
}
myIndex[i] = i;
}
for (int j = ; j < n; j++) {
int maxv = num[myIndex[j]][j];
int maxi = j;
for (int i = j+; i < n; i++) {
if (num[myIndex[i]][j] > maxv) {
maxv = num[myIndex[i]][j];
maxi = i;
}
}
int tmp = myIndex[j];
myIndex[j] = myIndex[maxi];
myIndex[maxi] = tmp;
//printf("%d\n", maxi);
}
for (int i = ; i < n; i++) {
printf("%d", num[myIndex[i]][]);
for (int j = ; j < n; j++) {
printf(" %d", num[myIndex[i]][j]);
}
puts("");
}
}
return ;
}第一次提交数组是index 居然提交编译错误,可能是库函数里有吧