poj1128 dfs好题 voj1030
来源:互联网 发布:www.2987js.com 编辑:程序博客网 时间:2024/05/18 00:43
先找出每个矩形的边界,再建立拓扑图。
#include <cstdio>#include <cstring>#include <string.h>#include <iostream>#include <algorithm>#include <queue>#include <vector>#include <cmath>using namespace std;#define pb(a) push_back(a)vector<int>g[30];int n,m,total;char st[100][100];int in[100];char ans[100];struct node{ int lx,ly,rx,ry;}rat[100];void init(){ total=0; memset(in,-1,sizeof(in)); for(int i=1;i<=26;i++) g[i].clear(); for(int i=1;i<=30;i++) { rat[i].lx=100; rat[i].ly=100; rat[i].rx=0; rat[i].ry=0; } int num; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(st[i][j]!='.') { num=st[i][j]-'A'+1; rat[num].lx=min(rat[num].lx,i); rat[num].ly=min(rat[num].ly,j); rat[num].rx=max(rat[num].rx,i); rat[num].ry=max(rat[num].ry,j); } } }}void build(){ for(int k=1;k<=26;k++) { if(rat[k].lx!=100) { if(in[k]==-1) in[k]=0; total++; for(int i=rat[k].lx;i<=rat[k].rx;i++) { for(int j=rat[k].ly;j<=rat[k].ry;j++) { if(i>rat[k].lx&&i<rat[k].rx&&j>rat[k].ly&&j<rat[k].ry) continue;//hehe if(st[i][j]=='.') continue; int num=1+st[i][j]-'A'; if(num!=k) { g[k].pb(num); if(in[num]==-1) in[num]+=2; else in[num]++; } } } } }}void dfs(int num,char *ans){ if(num==total) { printf("%s\n",ans); return; } for(int i=1;i<=26;i++) { if(in[i]==0) { in[i]=-1; for(int j=0;j<g[i].size();j++) { in[g[i][j]]--; } char c=i+'A'-1; char tmp=ans[num]; ans[num]=c; dfs(num+1,ans); ans[num]=tmp; in[i]=0; for(int j=0;j<g[i].size();j++) { int v=g[i][j]; in[v]++; } } }}int main(){ while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) { scanf("%s",st[i]+1); } init(); build(); memset(ans,NULL,sizeof(ans)); dfs(0,ans); } return 0;}
0 0
- poj1128 dfs好题 voj1030
- poj1128 拓扑排序+DFS
- POJ1128
- POJ1128 Frame Stacking [拓扑排序+dfs]
- POJ1128 Frame Stacking【DFS,拓扑排序】
- POJ1128 Frame Stacking(拓扑排序+dfs)
- POJ1128 Frame Stacking(拓扑排序,DFS)
- dfs好题一道
- ACM-ZOJ 1008 DFS 一道好题
- ZOJ 1204--Additive equations【DFS && 好题】
- nyoj-306-走迷宫【dfs】【好题】
- ★nyoj306(二分+dfs 好题)
- HDU 5927 Auxiliary Set DFS好题
- Hdu 5242 Game【Dfs+贪心】好题~
- DFS大法好
- poj1128 Frame Stacking
- poj1128 Frame Stacking
- poj1128(拓扑排序)
- Meet Python
- 用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
- Android博文索引
- 谷歌2015RoundA第一题
- 杭电 Seinfeld
- poj1128 dfs好题 voj1030
- 图片轮播_支持显示网络图片及下载图片至SD后再显示
- android 技术大牛 BLOG
- Android帧动画的实现
- [九度 1510 剑指offer]—替换空格 数组插入逆向移动
- 【技巧】JAVA 日期问题
- 常用运算符和函数、case\top\over
- AppCode3真的很不错
- 我竟无言以对!男女都走不出的27岁定律!