码迷,mamicode.com
首页 > 其他好文 > 详细

poj1753:状压搜索

时间:2015-10-20 21:22:42      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

状压+打表+bfs即可。ccz大神扫一眼:异或。。。遂秒

------------------------------------------------------------------------------------

#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define clr(x,c) memset(x,c,sizeof(x))
int a[5][5]={0,0,0,0,0,0,19,39,78,140,0,305,626,1252,2248,0,4880,10016,20032,35968,0,12544,29184,58368,51200};
queue<int>q;
int ans=0;
bool v[65536];
int d[65535];
int main(){
     for(int i=1;i<=4;i++){
      char c[4];
      scanf("%s",c);
      for(int j=0;j<4;j++){
       if(c[j]==‘b‘)
         ans+=(1<<4*(i-1)+j);
      }
     }
     q.push(ans);
     v[ans]=true;
     d[ans]=0;
     if(ans==65535||ans==0){
      printf("0\n");
      return 0;
     }
     while(!q.empty()){
      int tmp=q.front();
      q.pop();
      for(int i=1;i<=4;i++)
        for(int j=1;j<=4;j++){
         int t=tmp^a[i][j];
         if(!v[t]){
          d[t]=d[tmp]+1;
          if(t==65535||t==0){
           printf("%d\n",d[t]);
           return 0;
          }
          q.push(t);
          v[t]=true;
         }
        }
     }
     printf("Impossible\n");
     return 0;
}

------------------------------------------------------------------------------------

poj1753:状压搜索

标签:

原文地址:http://www.cnblogs.com/fighting-to-the-end/p/4896051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!