CodeForces 222B Cosmic Tables :一个矩阵对它进行k次操作,交换行、列,询问i行j列的数值:技巧

不去实际上交换行和列=

用两个数组表示当前行/列是原数组哪一行/列,这样只用交换变量

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int a[1005][1005],idx[1005],idy[1005];
 6 int main()
 7 {
 8   int n,m,k,i,j,x,y;
 9   char c;
10   scanf("%d%d%d",&n,&m,&k);
11   for (i=1;i<=n;i++)
12     for (j=1;j<=m;j++) scanf("%d",&a[i][j]);
13   for (i=1;i<=n;i++) idx[i]=i;
14   for (i=1;i<=m;i++) idy[i]=i;
15   while (k--)
16   {
17     scanf("%*c%c%d%d",&c,&x,&y);
18     if (c=='r') swap(idx[x],idx[y]);
19     else if (c=='c') swap(idy[x],idy[y]);
20     else printf("%d\n",a[idx[x]][idy[y]]);
21   }
22   return 0;
23 }
View Code

题目链接:http://codeforces.com/problemset/problem/222/B

posted on 2015-03-25 20:01  xiao_xin  阅读(253)  评论(0编辑  收藏  举报

导航