题目描述
给定一个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; }