zoukankan      html  css  js  c++  java
  • HDU 1997 汉诺塔VII

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1997

    该题的解题思路是递归,如同递归解决汉诺塔问题本身一样。

    本题的目标是将n个盘从a柱移动到c柱,如果n盘在a柱上,那么该移动序列应该处于将n-1个盘从a柱移动到b柱上,如果n盘在c柱上,那么该序列处于将n-1个盘从b柱移动到c柱上。于是乎,这就可以将其进一步看成n-1个盘的子问题。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    bool p[3][64];
    void init(){
    	for(int i=0;i<3;i++){
    		for(int j=0;j<64;j++){
    			p[i][j]=false;
    		} 
    	}
    }
    bool dfs(int n,int src,int by,int des){
    //	printf("%d discs move from %d by %d to %d
    ",n,src,by,des);
    	if(n==1){
    		if(p[src][n]){
    //			printf("%d disc at %d
    ",n,src);
    			return true;
    		}else if(p[des][n]){
    //				printf("%d disc at %d
    ",n,des);
    			return true;
    		}else{
    //			printf("error at disc %d
    ",n);
    			return false;
    		}
    	}
    	if(p[src][n]){
    //		printf("%d disc at %d
    ",n,src);
    		return dfs(n-1,src,des,by);
    	}else if(p[des][n]==true){
    //		printf("%d disc at %d
    ",n,des);
    		return dfs(n-1,by,src,des);
    	}else{
    //			printf("error at disc %d
    ",n);
    		return false;
    	}
    }
    int main(){
    	int t;
    	scanf("%d",&t);
    	while(t--){
    		int num;
    		init();
    		scanf("%d",&num);
    		int n1,n2,n3;
    		scanf("%d",&n1);
    		for(int i=0;i<n1;i++){
    			int v;
    			scanf("%d",&v);
    			p[0][v]=true;
    		}
    		scanf("%d",&n2);
    		for(int i=0;i<n2;i++){
    			int v;
    			scanf("%d",&v);
    		    p[1][v]=true;
    		}
    		scanf("%d",&n3);
    		for(int i=0;i<n3;i++){
    			int v;
    			scanf("%d",&v);
    			p[2][v]=true;
    		}
    		if(dfs(num,0,1,2)){
    			printf("true
    ");
    		}else{
    			printf("false
    ");
    		}
    	}
    }
    
  • 相关阅读:
    识别IE11浏览器
    国庆过后老革命
    有些东西再忙也要做
    云计算
    SVN下Update出现代码文件删除状态问题
    如何避免历史回退到登录页面
    CodeSmith连Oracle
    NHibernate直接执行SQL进行插入
    nhibernate实体类主键ID赋值问题
    NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
  • 原文地址:https://www.cnblogs.com/jackwuyongxing/p/4554681.html
Copyright © 2011-2022 走看看