当前位置:编程学习 > C/C++ >>

九度OJ 题目1470:调整方阵

题目1470:调整方阵时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:11
解决:6
 
题目描述:
输入一个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年西北工业大学计算机研究生机试真题
 
 
[cpp] 
/*********************************  
*   日期:2013-2-25 
*   作者:SJF0115  
*   题号: 九度OJ 题目1470:调整方阵 
*   来源:http://ac.jobdu.com/problem.php?pid=1470 
*   结果:AC  
*   来源:2011年西北工业大学计算机研究生机试真题 
*   总结:  
**********************************/   
#include<stdio.h>   
#include<limits.h>   
#include<string.h>   
int Matrix[11][11];  
  
int main(){  
    int i,j,N,Max,MaxIndex;  
    while(scanf("%d",&N) != EOF){  
        //输入   
        for(i = 0;i < N;i++){  
            for(j = 0;j < N;j++){  
                scanf("%d",&Matrix[i][j]);  
            }  
        }  
        for(j = 0;j < N;j++){  
            //找每列的最大数及其下标   
            Max = INT_MIN;  
            for(i = j;i < N;i++){  
                if(Matrix[i][j] > Max){  
                    Max = Matrix[i][j];  
                    MaxIndex = i;  
                }  
            }  
            //对换   
            int temp;  
            if(MaxIndex != j){  
                for(i = 0;i < N;i++){  
                    temp = Matrix[j][i];  
                    Matrix[j][i] = Matrix[MaxIndex][i];  
                    Matrix[MaxIndex][i] = temp;  
                }  
            }  
        }  
        //输出   
        for(i = 0;i < N;i++){  
            for(j = 0;j < N-1;j++){  
                printf("%d ",Matrix[i][j]);  
            }  
            printf("%d\n",Matrix[i][j]);  
        }  
    }  
    return 0;  
}  
 
/********************************* 
*   日期:2013-2-25
*   作者:SJF0115 
*   题号: 九度OJ 题目1470:调整方阵
*   来源:http://ac.jobdu.com/problem.php?pid=1470
*   结果:AC 
*   来源:2011年西北工业大学计算机研究生机试真题
*   总结: 
**********************************/ 
#include<stdio.h>
#include<limits.h>
#include<string.h>
int Matrix[11][11];
 
int main(){
int i,j,N,Max,MaxIndex;
while(scanf("%d",&N) != EOF){
//输入
for(i = 0;i < N;i++){
for(j = 0;j < N;j++){
scanf("%d",&Matrix[i][j]);
}
}
for(j = 0;j < N;j++){
//找每列的最大数及其下标
Max = INT_MIN;
for(i = j;i < N;i++){
if(Matrix[i][j] > Max){
Max = Matrix[i][j];
MaxIndex = i;
}
}
//对换
int temp;
if(MaxIndex != j){
for(i = 0;i < N;i++){
temp = Matrix[j][i];
Matrix[j][i] = Matrix[MaxIndex][i];
Matrix[MaxIndex][i] = temp;
}www.zzzyk.com
}
}
//输出
for(i = 0;i < N;i++){
for(j = 0;j < N-1;j++){
printf("%d ",Matrix[i][j]);
}
printf("%d\n",Matrix[i][j]);
}
}
return 0;
}
 
 
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,