首页 > 其他 > 详细

2014年王道论坛研究生机试练习赛(二)set 1 调整方阵

时间:2014-03-03 16:29:09      阅读:337      评论:0      收藏:0      [点我收藏+]

题目描述:

输入一个N(N<=10)阶方阵,按照如下方式调整方阵:
1.将第一列中最大数所在的行与第一行对调。
2.将第二列中从第二行到第N行最大数所在的行与第二行对调。
依此类推...
N-1.将第N-1列中从第N-1行到第N行最大数所在的行与第N-1行对调。
N.输出这个方阵

 

思路

1. 简单模拟题

2. 使用 dfs, 每次递归调整一行

 

代码

bubuko.com,布布扣
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
 
vector<int> matrix[12];
 
void dfs(int i, int n) {
    if(i == n-1)
        return;
 
    int maxVal = matrix[i][i], maxLine = i;
    for(int j = i+1; j < n; j++) {
        if(maxVal < matrix[j][i]) {
            maxVal = matrix[j][i];
            maxLine = j;
        }
    }
    swap(matrix[i], matrix[maxLine]);
    dfs(i+1, n);
}
 
void printMatrix(int n) {
    for(int i = 0; i < n; i ++) {
        printf("%d", matrix[i][0]);
        for(int j = 1; j < n; j ++) {
            printf(" %d", matrix[i][j]);
        }
        printf("\n");
    }
}
int main() {
    //freopen("testcase.txt", "r", stdin);
    int n;
    int cur;
    while(scanf("%d", &n) != EOF) { 
        if(n  <= 0 ) continue;
        for(int i = 0; i < n; i ++) {
            matrix[i].clear();
            for(int j = 0; j < n; j ++) {
                scanf("%d", &cur);
                matrix[i].push_back(cur);
            }
        }
        //printMatrix(n);
        dfs(0, n);
        printMatrix(n);
    }
    return 0;
}
bubuko.com,布布扣

2014年王道论坛研究生机试练习赛(二)set 1 调整方阵,布布扣,bubuko.com

2014年王道论坛研究生机试练习赛(二)set 1 调整方阵

原文:http://www.cnblogs.com/xinsheng/p/3577334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!