uva-1343 (IDA* ~)
2018-02-19 16:21
288 查看
有一个n天没刷题的傻子,,,,
代码如下不多说。
就是剪枝的深度有一点,我原来(maxd-d)*2<h,因为我觉得最多可以改变2个,但是TE了,
关键在于,原来写的贼麻烦,而且最傻逼的在于输出cout<<"No moves needed"<<endl;
cout<<s[ro[0]]<<endl;原来某傻逼是这样输出的
cout<<"No moves needed";认真点行不行
代码如下不多说。
就是剪枝的深度有一点,我原来(maxd-d)*2<h,因为我觉得最多可以改变2个,但是TE了,
关键在于,原来写的贼麻烦,而且最傻逼的在于输出cout<<"No moves needed"<<endl;
cout<<s[ro[0]]<<endl;原来某傻逼是这样输出的
cout<<"No moves needed";认真点行不行
#include <iostream> #include<algorithm> #include<cstring> #include<string> #include<cstdio> #include<vector> #include<map> using namespace std; int id[8][7]={ {1,3,7,12,16,21,23}, {2,4,9,13,18,22,24}, {11,10,9,8,7,6,5}, {20,19,18,17,16,15,14} }; int s[30]; int re[10]={5,4,7,6,1,0,3,2}; int ro[10]={7,8,9,12,13,16,17,18}; char ans[10000]; int a; int num; void smove(int t) { int y=s[id[t][0]]; for(int i=0;i<6;i++) { // cout<<" "<<id[t][i]<<"位的"<<s[id[t][i]]<<" "; s[id[t][i]]=s[id[t][i+1]]; } s[id[t][6]]=y; // cout<<s[id[t][6]]; // cout<<endl; } int geth() { int h=8; for(int a=1;a<=3;a++) { int rnt=0; for(int i=0;i<8;i++) { // cout<<s[ro[i]]<<" "; if(s[ro[i]]!=a) rnt++; } h=min(h,rnt); } return h; } void print() { ans[num]='\0'; printf("%s\n",ans); cout<<s[ro[0]]<<endl; } int dfs(int d,int maxd) { int h=geth(); if(d>maxd) return 0; if(h==0) return 1; if((maxd-d)<h) return 0; for(int i=0;i<8;i++) { ans[d]=(char)('A'+i); smove(i); if(dfs(d+1,maxd)) return 1; smove(re[i]); } return 0; } void solve() { for(int i=1;;i++) { num=0; ans[0]='\0'; if(dfs(0,i)) { num=i; print(); break; } } } void init() { for(int k=4;k<8;k++) for(int i=0,j=6;i<7;i++,j--) { id[k][i]=id[re[k]][j]; } } int main() { init(); whil 4000 e(cin>>s[1]&&s[1]) { for(int i=2;i<=24;i++) cin>>s[i]; ans[0]='\0'; num=0; // a=2; //smove(2,1); //cout<<geth()<<endl; //cout<<geth(); if(geth()) solve(); else { cout<<"No moves needed"<<endl; cout<<s[ro[0]]<<endl; } } return 0; } /* 1 1 1 1 3 2 3 2 3 1 3 2 2 3 1 2 2 2 3 1 2 1 3 3 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 0 */
相关文章推荐
- UVa 1343:The Rotation Game(IDA*)
- UVA 1343 - The Rotation Game-[IDA*迭代加深搜索]
- UVA 1343 The Rotation Game 【IDA*】
- Uva1343 The Rotation Game 【IDA*】【例题7-12】
- uva1343 IDA*
- [IDA*] UVa1343 The Rotation Game 旋转游戏
- POJ 2286 UVA 1343 The Rotation Game IDA*
- UVA-1343 The Rotation Game (IDA*)
- UVa 1343 旋转游戏(dfs+IDA*)
- UVA - 1343(IDA*(迭代加深搜索)为什么会很快原因待解 )
- uva1343(The Rotation Game)=>IDA*
- The Rotation Game UVA - 1343(IDA* 状态空间搜索)
- uva 1343 IDA*
- 例题7-12 UVA - 1343 The Rotation Game 旋转游戏(IDA*)
- UVa 1343 The Rotation Game(IDA*)
- 例题7-12 旋转游戏 UVa1343
- UVA-11214 IDA*
- UVA 1374 ——Power Calculus(IDA*搜索)
- 紫书搜索 例题7-12 UVA - 1343 The Rotation Game IDA*迭代加深搜索
- UVA - 1343 The Rotation Game