poj 2530 Tetris Alphabet 模拟
2011-11-28 19:36
190 查看
思路:按列循环,来模拟去方格的过程
View Code
View Code
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; char str[55][25],tmp[55][25],ans[27]; int n,flag; int judge(int x,int y,char ch) { int j; for (j=x;j<n;j++) { if (str[j][y]>='A'&&str[j][y]<='Z'&&str[j][y]!=ch) { flag=1;return 1; } } return 0; } void dfs(int x,int y,char ch) { int i,j,row,col,dir[4][2]={-1,0,1,0,0,-1,0,1}; for (i=0;i<4;i++) { row=dir[i][0]+x; col=dir[i][1]+y; if (row<n&&col<20&&row>=0&&col>=0&&tmp[row][col]==ch) { if(judge(row,col,ch))return; tmp[row][col]='.'; dfs(row,col,ch); if(flag)tmp[row][col]=ch; } } } void slove1() { int i,j,k=0; for (j=0;j<20;j++) { for (i=n-1;i>=0;i--) { flag=0; if (tmp[i][j]!='.') { tmp[i][j]='.'; if(!judge(i,j,str[i][j])) dfs(i,j,str[i][j]); if(flag)tmp[i][j]=str[i][j]; else ans[k++]=str[i][j]; break; } } } sort(ans,ans+k); printf("%c",ans[0]); } void slove2() { int i,j; for (j=0;j<20;j++) { for (i=n-1;i>=0;i--) { if (tmp[i][j]==ans[0]) { tmp[i][j]='.'; dfs(i,j,ans[0]); return; } } } } void Copy1() { int i; for (i=0;i<n;i++)strcpy(tmp[i],str[i]); } void Copy2() { int i; for (i=0;i<n;i++)strcpy(str[i],tmp[i]); } int main() { int i,j,num=0,vis[27]={0}; scanf("%d",&n); for (i=0;i<n;i++) { scanf("%s",str[i]); strcpy(tmp[i],str[i]); for(j=0;j<20;j++) { if(str[i][j]!='.'&&!vis[str[i][j]-'A']) { vis[str[i][j]-'A']=1; num++; } } } for (i=0;i<num;i++) { slove1(); Copy1(); slove2(); Copy2(); } printf("\n"); return 0; }
相关文章推荐
- POJ 2530 Tetris Alphabet 笔记
- poj 2530 Tetris Alphabet 拓扑排序
- POJ 2530 Tetris Alphabet
- poj 2632 Crashing Robots_模拟
- poj 1573 Robot Motion_模拟
- POJ 3972 BF (字符串模拟)
- POJ 2632 模拟
- 【dp每一天】POJ - 1655 Balancing Act(说是树形dp其实就是模拟?)
- 文章标题 POJ :1666 Candy Sharing Game(模拟)
- POJ题目分类---模拟[A一道删一道]
- POJ 3983 快算24 表达式模拟非常好的一个题
- POJ 2993 Emag eht htiw Em Pleh【模拟画棋盘】
- HDU 5374 Tetris(模拟俄罗斯方块)
- poj 3087 直接模拟
- poj 2106 Boolean Expressions(模拟)
- POJ 3750 小孩报数问题(模拟/数据结构—循环链表)
- POJ 3623 Best Cow Line, Gold(模拟)
- poj 1105 S-Trees 数组模拟建树
- POJ 3087 Shuffle'm Up 模拟
- 模拟 POJ-1581 A Contesting Decision