九度1470:调整方阵

题目描述:
输入一个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

来源:
2011年西北工业大学计算机研究生机试真题

 


 

#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;
}


 

你可能感兴趣的:(C++,C语言,ACM,OJ,九度,1470,调整方阵)