[UVA] 704 Colour Hash
所谓“周界搜索”,练习搜索的好题,双向宽搜/迭代加深均可,还有很多细节有待完善,判重有比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的更多相关文章
- uva 704
自己之前的不见了.. 这题是双向广搜即可过.. // Colour Hash (色彩缤纷游戏) // PC/UVa IDs: 110807/704, Popularity: B, Success ra ...
- uva 6959 Judging hash
Judging Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/viewProb ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- UVa 10029 hash + dp
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 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 ...
- UVA 257 - Palinwords(弦HASH)
UVA 257 - Palinwords 题目链接 题意:输出一个文本里面的palinword,palinword的定义为.包括两个不同的回文子串,而且要求回文子串不能互相包括 思路:对于每一个单词推 ...
随机推荐
- js框架:jQuery
· jQuery是一个轻量级的“写的少,做的多”的JavaScript函数库(jQuery版本2以上不支持IE6,7,8) · jQuery 的功能概括: 1.html 的元素选取 2.html的元素 ...
- A - Bi-shoe and Phi-shoe
每一个数字的欧拉函数要大于或等于该数字.求,最小的欧拉函数的下标和的大小. 答案要用longlong存 #include <iostream> #include <algorithm ...
- sql server 数据库维护
select 'kill ',s.spid, sd.name, * from sys.sysprocesses sinner join sys.sysdatabases sd on s.dbid=sd ...
- SpringBoot | Thymeleaf | 局部更新
建立一个实体类: public class Fruit { int id; String name; public Fruit() { } public Fruit(int id, String na ...
- IP服务-1-ARP和代理ARP
代理ARP常被人忽视,因为现在基本不用了
- mongodb-Configuration
命令行和配制后文件接口为Mongodb的管理者提供了大量的控制选项.在这篇文章中提供了对于一般应用场景的最佳实践配置. mongod --config /etc/mongod.conf mongod ...
- Tinghua Data Mining 9
关联规则,营销购物 空缺 协同过滤
- Codeforces 1139D(推式子+dp)
题目传送 推公式博客传送 推完式子就是去朴素地求就行了Orz const int maxn = 1e5 + 5; const int mod = 1e9 + 7; int m, mu[maxn], v ...
- java中代码执行顺序
静态代码块 -- >构造代码块 --> 构造方法静态代码块:只执行一次构造代码块:每次调用构造方法都执行 http://blog.csdn.net/wuhaiwei002/article/ ...
- svn基本命令
*验证svn安装是否成功 #svnadmin --version *创建svn的数据仓库 #svnadmin create /data/svn/svndata/spms *启动svn服务 #svnse ...