直接使用指针,交换时交换矩阵周围的指针即可。

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; const int N = 1005; struct dl{
int v;
struct dl *d, *r;
}e[N][N]; int main(){
int n, m , q;
scanf("%d%d%d", &n, &m, &q);
int x, y, s, t, h, w;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++)
scanf("%d", &e[i][j].v);
} for(int i = 0; i <= n; i++){
for(int j = 0; j <= m; j++){
e[i][j].r = &e[i][j + 1];
e[i][j].d = &e[i + 1][j];
}
} for(int i = 1; i <= q; i++){
scanf("%d%d%d%d%d%d", &x, &y, &s, &t, &h, &w);
dl *pos1, *pos2;
pos2 = pos1 = &e[0][0];
int th = h, tw = w;
while(-- x) pos1 = pos1 -> d;
while(-- y) pos1 = pos1 -> r;
th = h, tw = w;
while(-- s) pos2 = pos2 -> d;
while(-- t) pos2 = pos2 -> r; dl* tp1 = pos1, *tp2 = pos2; for(int r = 1; r <= h; r++){
pos1 = pos1 -> d;
pos2 = pos2 -> d;
swap(pos1 -> r, pos2 -> r);
} for(int c = 1; c <= w; c++){
pos1 = pos1 -> r;
pos2 = pos2 -> r;
swap(pos1 -> d, pos2 -> d);
} for(int c = 1; c <= w; c++){
tp1 = tp1 -> r;
tp2 = tp2 -> r;
swap(tp1 -> d, tp2 -> d);
} for(int r = 1; r <= h; r ++){
tp1 = tp1 -> d;
tp2 = tp2 -> d;
swap(tp1 -> r, tp2 -> r);
}
} dl *pos1 = &e[0][0]; for(int i = 1; i <= n; i++){
pos1 = pos1 -> d;
dl *tmp = pos1;
for(int j = 1; j <= m; j++){
pos1 = pos1 ->r;
if(j == 1)
printf("%d", pos1 ->v);
else printf(" %d", pos1 ->v);
}
puts("");
pos1= tmp;
} return 0;
}

  

最新文章

  1. 最流行的编程语言 JavaScript 能做什么?
  2. null和undefined的一些区别
  3. Log
  4. Linux启动盘制作
  5. C/C++学习笔记----指针的理解
  6. weblogic .NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi
  7. android 获取 imei号码 及相关信息
  8. mysql 树形数据,层级数据Managing Hierarchical Data in MySQL
  9. CentOS squid代理内网主机上网 openVpn配置
  10. TDD中的单元测试
  11. xdu_1009: Josephus环的复仇(线段树)
  12. 【转】控制台,终端,tty,shell等概念的区别
  13. Vim 神器的打造方式
  14. 解决150%DPI下Photoshop不能显示成合适大小的问题
  15. Session执行机制与原理
  16. pythonのdjango Session体验
  17. Max Chunks To Make Sorted LT769
  18. css 兼容ie8 rgba()用法
  19. mysql基础(二)—— 简单sql
  20. python脚本获取本机公网ip

热门文章

  1. 番茄花园Ghost Win10系统X64位10041装机版2015年4月
  2. 5-Java-C(单位分数)
  3. Windos无法验证文件数组签名
  4. g20学习笔记
  5. webservice和一般处理程序
  6. 【原】jq简易教程
  7. adb 设备命令
  8. Java 调用存储过程 返回结果集
  9. 笔试算法题(17):奇偶数分置数组前后段 &amp; 反序访问链表
  10. Sql语句的一些事(二)