POJ 3106 Flip and Turn 模拟 分析
来源:互联网 发布:高中知识点汇总软件 编辑:程序博客网 时间:2024/05/17 01:23
--------
const int maxn=400;const int maxm=200000;int n,m;char a[maxn][maxn];char b[maxn][maxn];int stk[10];int cnt;char s[maxm];char cd[7][3]={"1","CX","V","BY","2","AZ","H"};char sp[7][8]={"1","1H","1H1","1H1H","1H1H1","1H1H1H","H"};void work(char cmd){ for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ if (cmd=='1') b[j][i]=a[i][j]; if (cmd=='H') b[n-i+1][j]=a[i][j]; } } if (cmd=='1') swap(n,m); for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ a[i][j]=b[i][j]; } }}void stkPush(char cmd){ for (int i=0;i<7;i++){ if (strchr(cd[i],cmd)!=NULL){ int len=strlen(sp[i]); for (int j=0;j<len;j++){ if (cnt>0&&stk[cnt-1]==sp[i][j]) cnt--; else stk[cnt++]=sp[i][j]; if (cnt>=8) cnt=0; } break; } }}int main(){ while (~scanf("%d%d",&n,&m)){ cnt=0; for (int i=1;i<=n;i++) scanf("%s",a[i]+1); scanf("%s",s); int len=strlen(s); for (int i=0;i<len;i++) stkPush(s[i]); for (int i=0;i<cnt;i++) work(stk[i]); printf("%d %d\n",n,m); for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ printf("%c",a[i][j]); } printf("\n"); } }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
- POJ 1063 - Flip and Shift
- ACM学习-POJ-1063-Flip and Shift
- ACM学习-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 - 如何将两个/多个应用放到一个进程中去?
- 视频小知道
- ARM指令集——乘法指令
- JAVA中使用JSON进行数据传递
- UVA 10635 Prince and Princess DP LIS
- POJ 3106 Flip and Turn 模拟 分析
- linux下vim插件管理 vundle
- PowerLine不显示和'fancy'出现乱码
- RH318之RHEV-Manager配置
- LeetCode(141)Linked List Cycle
- 用 Python 脚本实现对 Linux 服务器的监控
- epoll 实例
- java中常见的数据算法
- 代理模式----C++实现