hdu 4127 Flood-it! 搜索
来源:互联网 发布:人工智能技术排名第一 编辑:程序博客网 时间:2024/06/05 02:34
http://acm.hdu.edu.cn/showproblem.php?pid=4127
模拟题
染色时候,选择格数较多的。然后迭代加深搜索,再考虑还剩下多少颜色,就可以减枝减过去了。确实很难的一道搜索。。。
#include<cstdio>#include<cstring>#include<iostream>#include<vector>const int INF = 10000;using namespace std;int n;struct Grid{char g[8][8];bool vis[8][8];int sum[6];int cur;vector<int> block[6];Grid(){cur=0;memset(vis,0,sizeof(vis));}int check(){int ans=0;for(int i=0;i<6;i++)if(sum[i])ans++;return ans;}void paint(int c){cur=c;for(int i=0;i<block[cur].size();i++){flood(block[cur][i]/8,block[cur][i]%8);}block[cur].clear();}void flood(int x,int y){if(vis[x][y])return;if(g[x][y]!=cur){block[g[x][y]].push_back(x*8+y);return;}sum[cur]--;vis[x][y]=true;if(x-1>=0)flood(x-1,y);if(x+1<n)flood(x+1,y);if(y-1>=0)flood(x,y-1);if(y+1<n)flood(x,y+1);}vector<int> get_seq(){vector<int> ans;bool v[6]={0};for(int i=0;i<6;i++){int u=-1;int m=0;for(int j=0;j<6;j++){if(!v[j]&&block[j].size()){if(block[j].size()>m){u=j;m=block[j].size();}}}if(u==-1)break;ans.push_back(u);v[u]=true;}return ans;}};int limit;int d;int ans;bool dfs(Grid &a){if(a.check()==0){ans=min(d,ans);return true;}if(d+a.check()>=limit)return false;vector<int> seq=a.get_seq();for(int i=0;i<seq.size();i++){Grid b=a;b.paint(seq[i]);d++;if(dfs(b))return true;d--;}}int main(){while(~scanf("%d",&n)){if(n==0)break;Grid a;memset(a.vis,0,sizeof(a.vis));memset(a.sum,0,sizeof(a.sum));for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a.g[i][j]);a.sum[a.g[i][j]]++;}}a.cur=a.g[0][0];a.block[a.g[0][0]].push_back(0);d=-1;ans=INF;for(limit=0;limit<1000;limit++){if(dfs(a))break;}printf("%d\n",ans);}}
- hdu 4127 Flood-it! 搜索
- HDU 4127 Flood-it!(IDA*搜索)
- HDU 4127Flood-it!
- HDU 4127 Flood-it!
- HDU 4127 Flood-it!(11年福州 IDA*搜索)
- HDU 4127 Flood-it! (迭代加深搜索)
- poj 4007 \ hdu 4127 Flood-it!
- hdu 4127 Flood-it! (IDA+bfs)
- ID(dfs+bfs)-hdu-4127-Flood-it!
- HDU 4127 Flood-it! (IDA*+BFS)
- hdu-4127 Flood-it!(IDA*算法)
- HDU 4127 Flood-it!(IDA*)
- hdu Flood-it!(IDA*算法)
- HDU-2871 Flood-it!(IDA*)
- hdu4127 Flood-it! (IDA*)
- POJ 4007 Flood-it!
- POJ 4007 Flood-it!
- 关于Flood-it游戏中的棋盘组别搜索的一种算法
- c#、winfrom 给程序添加命令行参数
- 最近整合Spring3 和Hibernate 4的总结
- 简单生成遮罩层的代码示例
- 割点模板
- varnish配置实战
- hdu 4127 Flood-it! 搜索
- VS 2010把行数显示出来
- mac os 利用ssh 搭建git server服务器详细教程,以及git基本用法(上)
- pe 文件
- 李嘉诚预言新操作系统即将面世 三星平台梦隐现
- Socket模型详解
- C++ set容器元素的插入与遍历
- Bloom filter 2
- CABasicAnimation用法详解