UVa11212 - Editing a Book
来源:互联网 发布:日本女腿粗 知乎 编辑:程序博客网 时间:2024/05/21 17:21
#include<iostream>#include<cstdio>#include<cstring>using namespace std;class Board{public: int a[16]; int h; int n; bool readIn() { int i; scanf("%d",&n); if(n == 0) return false; for(i=0;i<n;i++) scanf("%d",a+i); return true; } void move(int s,int e,int p) { int t[16],i,j; if(p<s) { for(i=0; i<p; i++) t[i]=a[i]; for(j=s; j<=e; j++,i++) t[i]=a[j]; for(j=p;j<s;j++,i++) t[i]=a[j]; for(j=e+1;j<n;j++,i++) t[i]=a[j]; } else { for(i=0;i<s;i++) t[i]=a[i]; for(j=e+1;j<p;j++,i++) t[i]=a[j]; for(j=s;j<=e;j++,i++) t[i]=a[j]; for(j=p;j<n;j++,i++) t[i]=a[j]; } memcpy(a,t,sizeof(t)); } int getH() { int cnt,i; cnt=0; for(i=0;i<n-1;i++) { if(a[i+1]!=a[i]+1) cnt++; } if(a[i]!=n) cnt++; h=cnt; return cnt; }};int lim;int f(int dep,int h){ return dep*3+h;}bool IDDFS(int dep,Board b){ int i,j,k; Board tb; b.getH(); if(f(dep, b.h) > lim*3) return false; if(b.getH()==0) return true; for(i=0;i<b.n;i++) { for(j=i;j<b.n;j++) { for(k=0;k<i;k++) { tb=b; tb.move(i,j,k); if(IDDFS(dep+1,tb)==true) return true; } for(k=j+2;k<b.n;k++) { tb=b; tb.move(i,j,k); if(IDDFS(dep+1,tb)==true) return true; } } } return false;}int main(){ Board b; int prob; prob=1; while(b.readIn()==true) { for(lim=0; ; lim++){ if(IDDFS(0,b)==true) break; } printf("Case %d: %d\n",prob, lim); prob++; } return 0;}
0 0
- UVa11212 - Editing a Book
- uva 11212 UVa11212 Editing a Book
- UVa11212 编辑书稿(Editing a book)
- UVA11212 Editing a Book (IDA*)
- Uva11212 编辑书稿(Editing a book,IDE算法)
- Uva11212 Editing a Book【IDA*】【例题7-10】
- 迭代加深搜索--IDA*--uva11212 Editing a book
- uva11212(Editing a Book/编辑书稿)=>IDA*算法/经典的估价函数
- 11212 - Editing a Book
- 11212 - Editing a Book
- Editing a Book UVA
- Editing a Book UVA
- bzoj1330: Editing a Book
- Editing a Book UVA
- Editing a Book UVA
- UVa 11212 Editing a Book
- UVA - 11212(Editing a Book)
- UVA - 11212 Editing a Book
- [新奇周边] 内置2400mAh电量 可以充电的手机壳上市【转载:今日头条】
- 推荐引擎算法学习导论
- yuv420
- ffmpeg学习(一)
- Oracle 11g客户端及PLSQL Developer配置
- UVa11212 - Editing a Book
- spring 核心内容
- 第二届Alictf-初赛第四题
- robotium自动化测试简介
- linux下普通用户获取sudo
- Android中自定义通用Json解释器
- Android自定义控件系列二:自定义开关按钮(一)
- c++文件结束符号
- Linux驱动开发之使用dev_dbg调试设备驱动