• 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
    ");
    		}
    	}
    }
    
  • 相关阅读:
    CH02 FPGA设计Verilog基础笔记(二)
    同一个按键短按与长按的区别触发
    树莓派 -- 输入设备驱动 (key) 续2: 转载 Setting up a GPIO-Button “keyboard” on a Raspberry Pi
    树莓派 -- 输入设备驱动 (key) 续1
    树莓派 -- 输入设备驱动 (key)
    树莓派 -- 按键 (key)使用BCM2835 gpio library
    leds-gpio driver 续1
    leds-gpio driver
    使用CSDN-markdown编辑器
    树莓派
  • 原文地址:https://www.cnblogs.com/jackwuyongxing/p/4554681.html
Copyright © 2020-2023  润新知