ACM--steps--2.2.3--汉诺塔VII
2015-02-02 10:43
246 查看
汉诺塔VII
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1256 Accepted Submission(s): 912[align=left]Problem Description[/align]n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱子从下往上的大小仍保持如下关系 :n=m+p+qa1>a2>...>amb1>b2>...>bpc1>c2>...>cqai是A柱上的盘的盘号系列,bi是B柱上的盘的盘号系列, ci是C柱上的盘的盘号系列,最初目标是将A柱上的n个盘子移到C盘. 给出1个系列,判断它是否是在正确的移动中产生的系列.例1:n=3321是正确的例2:n=3312是不正确的。注:对于例2如果目标是将A柱上的n个盘子移到B盘. 则是正确的.[align=left]Input[/align]包含多组数据,首先输入T,表示有T组数据.每组数据4行,第1行N是盘子的数目N<=64.后3行如下m a1 a2 ...amp b1 b2 ...bpq c1 c2 ...cqN=m+p+q,0<=m<=N,0<=p<=N,0<=q<=N,[align=left]Output[/align]对于每组数据,判断它是否是在正确的移动中产生的系列.正确输出true,否则false[align=left]Sample Input[/align]6 3 1 3 1 2 1 1 3 1 3 1 1 1 2 6 3 6 5 4 1 1 2 3 2 6 3 6 5 4 2 3 2 1 1 3 1 3 1 2 1 1 20 2 20 17 2 19 18 16 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1[align=left]Sample Output[/align]
true false false false true true
#include<iostream>using namespace std;const int N=65;int dyx(int n,int a[],int b[],int c[]){//从第一步进行判断。//第一步由(1)得,第n个盘子不会出现在b上。if(b[0]==n)return 0;//如果第n个盘子在a上else if(a[0]==n) return dyx(n-1,a+1,c,b);//如果第n个盘子在a上,则接下来要移动n-1个盘子到b上,再移动第n个盘子到c上。(1)//如果第n个盘子在c上,则现在的状态为:a上没有盘子,b上有n-1个盘子。(2)//那么接下来要移动,b上的n-2个盘子到a上,再移动n-1个盘子到c上。(3)//判断,盘子n-1是否从a移动到b上,如果从a移动到b上,在这一步n-1是不会出现在c上的。else if(c[0]==n) return dyx(n-1,b,a,c+1);//判断,盘子n-1是否从b移动到c上,如果从不b移动到c上,在这一步n-1是不会出现在a上的。return 1;}int main(){int a,b,c;int T;cin>>T;while(T--){int n;cin>>n;//表示盘子的总数。int x;cin>>x;for(int i=0;i<x;i++)cin>>a[i];int y;cin>>y;for(int i=0;i<y;i++)cin>>b[i];int z;cin>>z;for(int i=0;i<z;i++)cin>>c[i];//表示没有第x,y,z个盘子,没有这句会waa[x]=b[y]=c[z]=-1;if(dyx(n,a,b,c))cout<<"true"<<endl;elsecout<<"false"<<endl;}return 0;}[/code]
相关文章推荐
- hdu acm steps 2.2.3
- ACM--steps-2.1.8--求最高位
- ACM--steps--4.3.1--Tempter of the Bone
- ACM--steps--4.3.5--Sticks
- ACM--steps--dyx--1.2.2--
- ACM--steps--dyx--2.1.1--最小公倍数
- hdu acm steps 2.1.4
- hdu acm steps Biker's Trip Odometer
- HDOJ_ACM_steps—— Higher Math
- 2013山东省第四届ACM省赛 The number of steps
- ACM-steps-2.1.2--判别素数
- hdu 1071 ACM steps The area
- ACM--steps-dyx--1.2.3--find your present (2)(异或)
- ACM--dyx--steps--3.1.8--Queuing
- hdu acm steps 2.1.5
- hdu acm steps 2.2.4
- HDU ACMSteps 1.3.3:: Tian Ji ——The Horse Racing
- hdu ACM STEPS 1.2.7
- hdu ACMSteps 5.3.8 Rotate
- ACM--steps--2.1.3--CAKE