POJ 3106 Flip and Turn
来源:互联网 发布:淘宝店铺类目是什么 编辑:程序博客网 时间:2024/04/29 20:45
首先这是一道模拟题, 由于数据量较大, 这里利用了小矩阵先进行模拟然后将结果映射到大矩阵的方法.
时间较慢, 需要454ms. 将就着看吧...
更快的做法是先将所有操作拆分成数个基本操作: 即沿主对角线翻折和水平翻折. 然后利用栈模拟并抵销相同的基本操作完成简化, (详见某红书)
当然还有另一种理论更快的做法, 这里先挖个坑, 下次再写, 目测速度可达45ms以内.
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#define MAXN 100005#define For(i,m,n) for(i=m;i<n;i++)#define MOD 1000000007int r[2][2]={1,2,3,4};void swap(int *x, int *y){ int t; t=*x; *x=*y; *y=t;}void op1(){ swap(&r[0][1],&r[1][0]);}void op2(){ swap(&r[0][0],&r[1][1]);}void opH(){ swap(&r[0][0],&r[1][0]); swap(&r[0][1],&r[1][1]);}main(){ int i, j, m, n, flag, ti, tj, cnt=0; char ch, map[330][330]; scanf("%d%d",&m,&n); getchar(); For(i,0,m) gets(map[i]); while(scanf("%c",&ch),ch!='\n'){ if(ch=='1') op1(),cnt++; if(ch=='2') op2(),cnt++; if(ch=='H') opH(); if(ch=='V') op1(),op2(),opH(); if(ch=='A'||ch=='Z') op2(),opH(),cnt++; if(ch=='B'||ch=='Y') op1(),op2(); if(ch=='C'||ch=='X') op1(),opH(),cnt++; } if(cnt%2) swap(&m,&n); if(r[0][0]==1&&r[0][1]==2&&r[1][0]==3) flag=1; if(r[0][0]==1&&r[0][1]==3&&r[1][0]==2) flag=2; if(r[0][0]==2&&r[0][1]==1&&r[1][0]==4) flag=3; if(r[0][0]==2&&r[0][1]==4&&r[1][0]==1) flag=4; if(r[0][0]==3&&r[0][1]==1&&r[1][0]==4) flag=5; if(r[0][0]==3&&r[0][1]==4&&r[1][0]==1) flag=6; if(r[0][0]==4&&r[0][1]==2&&r[1][0]==3) flag=7; if(r[0][0]==4&&r[0][1]==3&&r[1][0]==2) flag=8; printf("%d %d\n",m,n); For(i,0,m){ For(j,0,n){ if(flag==1) ti=i, tj=j; if(flag==2) ti=j, tj=i; if(flag==3) ti=i, tj=n-j-1; if(flag==4) ti=j, tj=m-i-1; if(flag==5) ti=n-j-1, tj=i; if(flag==6) ti=m-i-1, tj=j; if(flag==7) ti=n-j-1, tj=m-i-1; if(flag==8) ti=m-i-1, tj=n-j-1; printf("%c",map[ti][tj]); } puts(""); } return 0;}
0 0
- POJ 3106 Flip and Turn
- 模拟 poj 3106 Flip and Turn
- POJ 3106Flip and Turn(模拟)
- POJ 3106 Flip and Turn 模拟 分析
- POJ 3106 Flip and Turn 笔记
- POJ 3106 Flip and Turn <卡时间题目〉
- Poj 3106 Flip and Turn(模拟+优化)
- poj 1063 Flip and Shift
- POJ 1063 - Flip and Shift
- ACM学习-POJ-1063-Flip and Shift
- ACM学习-POJ-1063-Flip and Shift
- 模拟+搜索poj 1063 Flip and Shift
- [zz]Flip and Shift -- POJ 1063 解题报告
- POJ 1063 Flip and Shift(找规律题)
- poj 1063 Flip and Shift 冒泡排序的扩展运用
- POJ 1063 Flip and Shift 已被翻译
- Flip and Shift(ZJU_1028)
- zoj1028 Flip and Shift
- android 源码下载
- SeedCoder2014热身题10:解答
- k-折交叉验证(k-fold crossValidation)
- Codeforces Round #240 (Div. 2)(前三题解题报告)
- 【转载】UML类图与类的关系详解
- POJ 3106 Flip and Turn
- linux中fork()函数详解
- ftp报错 200 port command successful. consider using pasv 425 failed to establish connection
- macos+apache+php+phpmyadmin 的整合过程梳理
- 成绩统计--解题思路
- 游戏服务器里GUID的生成算法
- Java初探
- Mashmokh and ACM(Codeforces Round #240)
- Python六大开源框架对比:Web2py略胜一筹