西北工业大学计算机 复试 调整矩阵

    题目1:调整方阵

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:789

解决:359

题目描述:

输入一个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
 
    
 
    
水题一道,但是还AC了很久 ,本来以为在 外面定义一个 swap函数就可以实现交换 没想到一点都没有用 害得我wa了很久     
源代码:
#include<iostream>
#include<cstdio>
using namespace std;
#define N 11

int main()
{
    //题目大意:输入一个N介方阵
    //在第一列所在的最大的数所在的行与第一行对调
    //将第二列中最大的数到第N行最大数所在的行与第二行对调 依次类推。。。
    int n, j, i, k;
    int a[N][N];
    while(cin>>n)
    {
        for(i = 0; i < n; i++)
        {//输入
            for(j = 0 ; j < n; j++)
            {
                cin>>a[i][j];
            }
        }
        int pos ;
        for(i = 0 ; i < n; i++)
        {//从第0 列开始
            int max = -1001;
            for(j = i ; j < n ; j++)
             {
                 //j 表示行 找到最大列位置的行位置
                if(a[j][i] > max)
                {
                    max = a[j][i];
                    pos = j;//pos 记录所在的行
                }
             }
             //找到所在的行 然后接下来交换
             int tmp;
                 for(k = 0 ; k < n; k++)
                 {
                      tmp = a[pos][k];
                      a[pos][k] = a[i][k];
                      a[i][k] = tmp;
                 }
        }

        for(i = 0 ; i < n; i++)
        {
            for(j = 0 ; j < n-1; j++)
            {
                printf("%d ", a[i][j]);
            }
            cout<<a[i][j]<<endl;
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值