题意:
有一个大矩阵,某些格子上有数字,然后有三种操作,
1 交换行
2 交换列
3 询问当前坐标数值
思路:
直接用map去映射行列,用二维的map去存数字就行了,水题,想不通的看下代码。
#include<stdio.h>
#include<map>
using namespace std;
map<int ,int>row ,col;
map<int ,map<int ,int> >my_map;
int main ()
{
int n ,m ,k ,i ,q ,a ,b ,c;
int cas = 1 ,T;
scanf("%d" ,&T);
while(T--)
{
scanf("%d %d %d" ,&n ,&m ,&k);
row.clear();
col.clear();
my_map.clear();
while(k--)
{
scanf("%d %d %d" ,&a ,&b ,&c);
a ++ ,b ++;
row[a] = a;
col[b] = b;
my_map[a][b] = c;
}
scanf("%d" ,&q);
printf("Case #%d:\n" ,cas ++);
while(q--)
{
scanf("%d %d %d" ,&a ,&b ,&c);
b ++ ,c ++;
if(a == 1)
{
int tmp = row[b];
row[b] = row[c];
row[c] = tmp;
}
if(a == 2)
{
int tmp = col[b];
col[b] = col[c];
col[c] = tmp;
}
if(a == 3)
printf("%d\n" ,my_map[row[b]][col[c]]);
}
}
return 0;
}