题目描述:
输入一个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<stdio.h>
#include<limits.h>
int a[20][20];
void Swap(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}
void Change(int x,int y,int n)
{
int i;
for(i=0;i<n;i++)
{
Swap(a[x][i],a[y][i]);
}
}
void Found(int x,int n)
{
int i,flag=-1,max=a[x][x];
for(i=x;i<n;i++)
{
if(a[i][x]>max)
{
max=a[i][x];
flag=i;
}
}
if(flag!=-1)
Change(x,flag,n);
}
int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
Found(i,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[i][j]);
if(j!=n-1)
printf(" ");//一定要注意空格的问题!好多人死在这
}
printf("\n");
}
}
return 0;
}