BZOJ1054
2015-08-26 10:06
260 查看
传送门:BZOJ1054
傻逼广搜题,按位转化为二进制判重。
坑爹之处在于数字居然是黏在一起给出来的……
代码上的小细节见下。
傻逼广搜题,按位转化为二进制判重。
坑爹之处在于数字居然是黏在一起给出来的……
代码上的小细节见下。
[code]#include <cstdio> #include <cstdlib> #include <algorithm> #include <iostream> #include <cmath> #include <cstring> #include <queue> using namespace std; int mx[4]={-1,0,1,0},my[4]={0,1,0,-1}; struct Matrix{ int c[5][5]; int step; void Print(){ for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++) printf("%d ",c[i][j]); printf("\n"); } } }; queue<Matrix> Q; Matrix Begin,End; bool used[1000005]; int GetHash(Matrix a) { int ans=0,tot=0; for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) ans+=a.c[i][j]*(1<<(++tot)); return ans; } bool Equal(Matrix a,Matrix b) { return GetHash(a)==GetHash(b); } void Solve() { Q.push(Begin); used[GetHash(Begin)]=true; while(!Q.empty()){ Matrix b=Q.front();Q.pop(); if(Equal(b,End)){ printf("%d\n",b.step); return; } for(int i=1;i<=4;i++) for(int j=1;j<=4;j++){ if(b.c[i][j]==0) continue; Matrix a=b; a.c[i][j]=0; for(int k=0;k<=3;k++){ int x=i+mx[k],y=j+my[k]; if(x<1||x>4||y<1||y>4||a.c[x][y]!=0) continue; a.c[x][y]=1; if(!used[GetHash(a)]){ used[GetHash(a)]=true; a.step++; Q.push(a); a.step--; } a.c[x][y]=0; } } } } void Readdata() { freopen("loli.in","r",stdin); char c; for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ scanf("%c",&c); Begin.c[i][j]=c-'0'; } scanf("\n"); } scanf("\n"); for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ scanf("%c",&c); End.c[i][j]=c-'0'; } scanf("\n"); } } void Close() { fclose(stdin); fclose(stdout); } int main() { Readdata(); Solve(); Close(); return 0; }
相关文章推荐
- Java IO流->处理流->转换流:InputStreamReader&OutputStreamWriter
- android线性布局之比例
- UIday01_zy: 用iPhone6模拟器设计一个6行5列的label,并把百家姓放进去
- 常规功能和模块自定义系统(cfcmms)—004可自定义的项目
- JavaScript [ 转 ] —— 面向对象编程(三):非构造函数的继承
- Android 如何监听返回键,弹出一个退出对话框
- js控制多图左右滚动切换效果代码分享
- 经典算法研究系列:九之续、sift算法的编译与实现
- infragistics--web网站升级注意点
- JavaScript [ 转 ] —— 面向对象编程(二):构造函数的继承
- 【转】Sprague-Grundy函数
- POJ-1942-Paths on a Grid-组合数学
- 时钟初始化
- JDBC ORACLE 数据库隔离级别
- POJ 2229 Sumsets
- 一条sql查出数据库某张表的所有属性
- 深入理解计算机操作系统——第8章:信号
- 谷歌高级搜索
- Rust之语法<2>函数
- AndroidUniversalImageLoader使用详解