九度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; }
最後更新:2017-04-03 12:55:21