不去实际上交换行和列=
用两个数组表示当前行/列是原数组哪一行/列,这样只用交换变量
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }