hdu 5671 Matrix
来源:互联网 发布:淘宝网手套 编辑:程序博客网 时间:2024/04/30 20:30
对于交换行、交换列的操作,分别记录当前状态下每一行、每一列是原始数组的哪一行、哪一列即可。
对每一行、每一列加一个数的操作,也可以两个数组分别记录。注意当交换行、列的同时,也要交换增量数组。
输出时通过索引找到原矩阵中的值,再加上行、列的增量。
#include <iostream>#include <cstdio>#include <map>#include <cstring>#include <vector>using namespace std;const int N = 1005;int n, m;int row[N];int col[N];int mat[N][N];int row_add[N];int col_add[N];int main(){ int T, q, type, x, y; scanf("%d", &T); while(T--) { scanf("%d%d%d", &n, &m, &q); memset(row_add, 0, sizeof(row_add)); memset(col_add, 0, sizeof(col_add)); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { scanf("%d", &mat[i][j]); col[j] = j; } row[i] = i; } while(q--) { scanf("%d%d%d", &type, &x, &y); if(type == 1) { x--; y--; swap(row[x], row[y]); swap(row_add[x], row_add[y]); } else if(type == 2) { x--; y--; swap(col[x], col[y]); swap(col_add[x], col_add[y]); } else if(type == 3) { x--; row_add[x] += y; } else if(type == 4) { x--; col_add[x] += y; } } for(int i=0; i<n; i++) { for(int j=0; j<m ;j++) if(j == 0) printf("%d", mat[row[i]][col[j]] + row_add[i] + col_add[j]); else printf(" %d", mat[row[i]][col[j]] + row_add[i] + col_add[j]); printf("\n"); } } return 0;}
0 0
- HDU 5671 Matrix
- hdu 5671 Matrix(模拟)
- HDU 5671 Matrix
- HDU 5671 Matrix
- HDU 5671:Matrix【技巧】
- HDU 5671 Matrix
- hdu 5671 Matrix【思维】
- HDU 5671 Matrix
- hdu 5671 Matrix
- HDU-5671 Matrix
- hdu 5671 (Matrix)
- hdu 5671 Matrix
- HDU 5671 Matrix
- HDU 5671 Matrix (矩阵操作)
- 【HDU 杭电 5671 Matrix】
- Matrix HDU
- hdu 5671 Matrix(矩阵行列交换)
- [hdu 5671][BestCoder Round #81 t2] Matrix
- JavaScript算法
- Eclipse中Maven管理的jar没有发布到WEB-INF/lib下的解决方案
- 共用数据保护(const 常量)
- hibernate反向生成奇葩错误
- leetcode-260. Single Number III
- hdu 5671 Matrix
- karatsuba乘法
- Activity销毁时返回数据
- 目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)
- c语言小项目个人实现
- JSONObject解析json字符串实现
- 使用快速傅里叶变换计算大整数乘法-代码
- hdu 5672 String
- Java基础二