有一个大矩阵,某些格子上有数字,然后有三种操作,
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: " ,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 " ,my_map[row[b]][col[c]]); } } return 0; }