所谓“周界搜索”,练习搜索的好题,双向宽搜/迭代加深均可,还有很多细节有待完善,判重有比set更优的结构,宽搜还没写,先存一下。

//Writer:GhostCai && His Yellow Duck

#include<iostream>
#include<string>
#include<set>
#include<queue>
using namespace std; set<string> book;
set<string> ans;
bool flag;
string tar="034305650121078709X90";
string st,tmp,sr;
int n; void change(int way,string &r){
char sav;
int i;
switch(way){
case 1:
sav=r[11];
for(i=11;i>=1;i--) r[i]=r[i-1];
r[0]=sav;
break;
case 2:
sav=r[0];
for(i=0;i<=10;i++) r[i]=r[i+1];
r[11]=sav;
break;
case 3:
sav=r[9];
for(i=9;i<=19;i++) r[i]=r[i+1];
r[20]=sav;
break;
case 4:
sav=r[20];
for(i=20;i>=10;i--) r[i]=r[i-1];
r[9]=sav;
break;
} } void make(int dp,int mxdp){
if(dp>mxdp) return;
cout<<tar<<endl;
string pre;
for(int i=1;i<=4;i++){
pre=tar;
change(i,tar);
if(!ans.count(tar)) {
ans.insert(tar);
make(dp+1,mxdp);
}
tar=pre;
}
} void dfs(int dp,int mxdp){
if(dp>mxdp) return;
if(flag) return;
if(ans.count(tmp)){
flag=1;
return;
}
if(book.count(tmp) ) return;
// cout<<tmp<<endl;
int i;
string pre;
for(i=1;i<=4;i++){
pre=tmp;
change(i,tmp); //
dfs(dp+1,mxdp);
book.insert(tmp); tmp=pre;
}
} bool read_s(){
int s;
for(int i=1;i<=24;i++){
cin>>s;
if(i>=22) continue;
if(s==10) st+='X' ;
else st+=char('0'+s);
}
return true;
} int main(){
make(1,8);
cin>>n;
for(int i=1;i<=n;i++){
// read_s();
cin>>st;
// cout<<st<<endl;
if(st==tar) {
cout<<"PUZZLE ALREADY SOLVED\n";
st="";
continue;
}
tmp=st;
flag=0;
for(int i=1;i<=8;i++){
dfs(1,i);
if(flag){
cout<<i<<endl;
break;
}
}
if(!flag) cout<<"NO SOLUTION WAS FOUND IN 16 STEPS\n";
st="";
} }

[UVA] 704 Colour Hash的更多相关文章

  1. uva 704

    自己之前的不见了.. 这题是双向广搜即可过.. // Colour Hash (色彩缤纷游戏) // PC/UVa IDs: 110807/704, Popularity: B, Success ra ...

  2. uva 6959 Judging hash

    Judging Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/viewProb ...

  3. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  4. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  5. ACM训练计划step 1 [非原创]

    (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...

  6. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  7. UVa 10029 hash + dp

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. UVA 10798 - Be wary of Roses (bfs+hash)

    10798 - Be wary of Roses You've always been proud of your prize rose garden. However, some jealous f ...

  9. UVA 257 - Palinwords(弦HASH)

    UVA 257 - Palinwords 题目链接 题意:输出一个文本里面的palinword,palinword的定义为.包括两个不同的回文子串,而且要求回文子串不能互相包括 思路:对于每一个单词推 ...

随机推荐

  1. Git的使用方法与GitHub项目托管方法

    Git的安装 Windows上安装Git 访问网址:https://git-for-windows.github.io/ 点击Download下载,下载后双击安装包进行安装,一直"下一步&q ...

  2. endless(2018.10.25)

    这题就是个线段树合并板子. #include<cstdio> #include<algorithm> #include<cstring> using namespa ...

  3. Java | 基础归纳 | 静态方法与实例方法的区别

    静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...

  4. PostgreSQL-5-条件过滤

    基本语法 SELECT column1, column2, columnN FROM table_name WHERE [search_condition] 操作符 =等于:<>不等于:! ...

  5. laravel之null替换空字符串中间件

    在laravel写接口的时候免不了数据库中保存null,可用诸如设置ORM的访问器或以下方法处理 $goods->name?$goods->name:''; 其实可以利用路由中间件,在需要 ...

  6. B.出题人的女装

    链接:https://ac.nowcoder.com/acm/contest/358/B 题意: 出题人早上起床就打算穿衣服,他有两箱衣服,因为懒,他在这两天只打算打开一个箱子. 两个箱子中一个有n件 ...

  7. Hungary Algorithm国外板子

    Codeforces 1107一题除了dp做法还有二分带权匹配O(n^3)做法,国外网友的板子时间非常优秀,但矩阵设定的事情并不是很懂-- //Codeforces 1107F const int m ...

  8. 通过configmap更新k8s里的mysql配置文件

    背景: 环境注意:在用rancher搭建的k8s里,mysql是起了一个pod,镜像是网上的mysql:5.7 开发人员提出了一个报错“查询时的ONLY_FULL_GROUP_BY错误”,让我改sql ...

  9. java中的线程安全是什么?什么叫线程安全?什么叫不安全?

    java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...

  10. 09通过winfrom实现简单的播放音、视频

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...