XidianOJ 1129 an old problem

题目描述

给定一个n*m的矩阵,要求支持下面的操作:
0 x y:交换第x行与第y行
1 x y:交换第x列与第y列

输入

多组数据。对于每组测试数据,第一行包含三个数n,m,k(1<=n,m<=1000;1<=k<=100000),分别表示行数,列数,操作数。
接下来n行,每行m个整数,表示初始的矩阵,矩阵中每个数小于10^9。
接下来k行每行一个操作,格式如题目所述。

输出

对于每组数据,输出完成所有操作后的矩阵。

--正文
跟又是苹果其实是一个问题
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;

int nowx[1001],nowy[1001];
int n,m,k;
int matrix[1001][1001];
int main(){
    while (scanf("%d %d %d",&n,&m,&k) != EOF){
        int i,j;
        for (i=1;i<=n;i++){
            for (j=1;j<=m;j++){
                scanf("%d",&matrix[i][j]);
            }
        }
        for (i=1;i<=n;i++) nowx[i] = i;
        for (j=1;j<=m;j++) nowy[j] = j;
        
        for (i=1;i<=k;i++){
            int order,a,temp,b;
            scanf("%d %d %d",&order,&a,&b);
            if (order == 0){
                temp = nowx[a];
                nowx[a] = nowx[b];
                nowx[b] = temp;
            }
            else {
                temp = nowy[a];
                nowy[a] = nowy[b];
                nowy[b] = temp;
            }
        } 
        
        for (i=1;i<=n;i++){
            for (j=1;j<=m;j++){
                if (j == 1) 
                printf("%d",matrix[nowx[i]][nowy[j]]);
                else
                printf(" %d",matrix[nowx[i]][nowy[j]]);
            }
            printf("
");
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/ToTOrz/p/6086538.html