zoukankan      html  css  js  c++  java
  • 九度 1470 调整方阵

    题目描述:

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

    思路

    1. 简单模拟题

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

    代码

    #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("
    ");
        }
    }
    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;
    }
  • 相关阅读:
    subtext 安装PythonIDE -Anaconda
    Python--DBUtil
    python操作oracle数据库-查询
    Python 离线工作环境搭建
    Scrapy-下载中间件
    centos安装 Anaconda3及使用
    Scrapy爬取人人网
    海明距离
    中心极限定理
    最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
  • 原文地址:https://www.cnblogs.com/xinsheng/p/3577334.html
Copyright © 2011-2022 走看看