神奇bug,没有记录pre就show了,找了1个小时。

#include <bits/stdc++.h>
using namespace std;
#define ll long long int C=; int encode(int *a)
{
int res=;
for(int i=;i<; i++)
{
if(a[i])
res|=;
res<<=;
}
return res>>;
} void decode(int code,int *a)
{
for(int i=; i>=; i--)
{
a[i]=code&;
code>>=;
}
} struct dat
{
int cur;
int pre;
} d,dt,data[]; queue<dat> q; void showbit(int s){
string str;
for(int i=;i<;i++){
str=char((s&)+'')+str;
s>>=;
if(i%==)
str='\n'+str;
}
cout<<str<<endl;
} void show(dat d)
{
//cout<<"show"<<endl;
stack<int> s;
s.push(d.cur);
while()
{
if(d.pre==-)
break;
s.push(d.pre);
d=data[d.pre];
} printf("%d",s.size()-); int cur=s.top(); while(!s.empty())
{
int nex=s.top();
//showbit(cur); s.pop(); for(int i=;i>=;i--){
if(((cur>>i)&)!=((nex>>i)&)){
//cout<<bitset<32>(cur)<<endl;
//cout<<bitset<32>(nex)<<endl<<endl;
int t=-i;
printf("%d%d",(t+)/,(t%)==?:t%);
}
}
printf("\n");
cur=nex;
} //showbit(cur);
} int t; inline bool found(int code)
{
return (code==t);
} void bfs(int s)
{
memset(data,-,sizeof(data)); d.cur=s;
d.pre=-; if(found(d.cur))
{
show(d);
return;
} data[d.cur]=d;
q.push(d); while(!q.empty())
{
d=q.front();
q.pop(); //cout<<bitset<32>(d.cur)<<endl; for(int i=;i<;i++){
for(int j=i+;j<;j++){
if((abs(i-j)==||((i/==j/)&&(abs(i-j)==)))&&(((d.cur>>i)&)!=((d.cur>>j)&))){
//cout<<"i="<<i<<" j="<<j<<endl;
dt.cur=(d.cur^((<<i)^(<<j)));
/*if(bitset<32>(d.cur).count()!=8&&bitset<32>(dt.cur).count()!=8){
cout<<bitset<32>(d.cur)<<endl;
cout<<bitset<32>(dt.cur)<<endl;
}*/ if(data[dt.cur].cur==-){
dt.pre=d.cur;
data[dt.cur]=dt;
q.push(dt);
if(found(dt.cur)){
show(dt);
return;
}
}
}
}
}
}
} int main()
{
int a[];
for(int i=; i<; i++)
{
scanf("%1d",&a[i]);
} int s=encode(a); /*printf("s=%d\n",s);
cout<<bitset<32>(s)<<endl; decode(s,a);
for(int i=0; i<16; i++)
{
printf("%d%c",a[i]," \n"[i%4==3]);
}*/ for(int i=; i<; i++)
{
scanf("%1d",&a[i]);
}
t=encode(a); /*printf("t=%d\n",t);
cout<<bitset<32>(t)<<endl; decode(t,a);
for(int i=0; i<16; i++)
{
printf("%d%c",a[i]," \n"[i%4==3]);
}*/ bfs(s);
}

最新文章

  1. c3p0连接数据库的3种方式
  2. flask_sqlalchemy 命名遇到的一个小坑
  3. excel 导入数值变成科学记数的解决办法.
  4. 扫地雷II
  5. Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮
  6. OpenCV函数解读之groupRectangles
  7. ubuntu上部署github博客,利用hexo
  8. &lt;一&gt;面向对象分析之面向对象和面向过程
  9. 百度参投 Uber中国12亿美元融资已到账
  10. centos 6.3安装mono和monoDevelop过程
  11. python基础教程第4章——字典
  12. Tsung测试统计报告说明
  13. 我的three.js学习记录(一)
  14. [转]Python多进程并发操作中进程池Pool的应用
  15. nginx + flask + uwsgi + centos + python3 搭建web项目
  16. day03(变量,常量,输入输出,注释,基本数据类型,运算符)
  17. Win下安装nvm
  18. 线性回归(linear regression)
  19. Linux命令列内容
  20. P4782 【模板】2-SAT 问题

热门文章

  1. fedora关闭防火墙
  2. webrtc初探
  3. Objective-C之成魔之路【0-序章】
  4. Qt中 QString 和int,double等的转换
  5. RecyclerViewDemo
  6. angularjs开发常见问题-2(angularjs内置过滤器)
  7. 4408: [Fjoi 2016]神秘数
  8. ArchLinux最小化安装 必备库 常用命令
  9. 百度dureos CMake Error
  10. redis03----link 链表操作