POJ 1753(用到了状态压缩)

来源:互联网 发布:龙卷风收音机软件 编辑:程序博客网 时间:2024/06/17 13:37






#include <cstdio>#include <cstring>#include <queue>#include <iostream>using namespace std;int step;int bfs(int start){queue<int> Queue;int book[65536],last=start;memset(book,0,sizeof(book));Queue.push(start);book[start]=1;step=0;while(!Queue.empty()){int head=Queue.front();Queue.pop();if(head==0||head==65535){return 1;}for(int i=0;i<16;i++){int temp=head^(1<<i);if((i+1)%4)temp=temp^(1<<(i+1));if(i%4)temp=temp^(1<<(i-1));if(i>3)temp=temp^(1<<(i-4));if(i<12)temp=temp^(1<<(i+4));if(!book[temp]){book[temp]=1;Queue.push(temp);}}if(head==last){step++;last=Queue.back();}}return 0;}int main(){char ch;int t,start=0;for(int i=0;i<16;i++){ch=getchar();t=(ch=='b'?1:0);start=(t<<i)+start;if((i+1)%4==0){getchar();}}int flag=bfs(start);if(flag){cout<<step<<endl;}else{cout<<"Impossible\n";}return 0;}




1 0
原创粉丝点击