zoukankan      html  css  js  c++  java
  • 【三色汉诺塔】

    /*
    三色汉诺塔 
    */
    
    #include <stdio.h>
    
    void hanoi(int disks, char source, char temp, char target)
    {
        if(disks == 1)
        {
            printf("move disk from %c to %c 
    ", source ,target);
            printf("move disk from %c to %c 
    ", source ,target);
            printf("move disk from %c to %c 
    ", source ,target);
        }
        else
        {
            hanoi(disks - 1, source, target, temp);
            hanoi(1, source, temp, target);
            hanoi(disks - 1, temp, source, target);
        }
    }
    
    void hanoi3colors(int disks)
    {
        char source = 'A';
        char temp = 'B';
        char target = 'C';
        int i;
        if(disks == 3)
        {
            printf("move disk from %c to %c 
    ", source , temp);
            printf("move disk from %c to %c 
    ", source , temp);
            printf("move disk from %c to %c 
    ", source , target);
            printf("move disk from %c to %c 
    ", temp , target);
            printf("move disk from %c to %c 
    ", temp , source);
            printf("move disk from %c to %c 
    ", target , temp);
        }
        else
        {
            hanoi(disks / 3 - 1, source, temp, target);
            printf("move disk from %c to %c 
    ", source, temp);
            printf("move disk from %c to %c 
    ", source, temp);
            printf("move disk from %c to %c 
    ", source, temp);
            
            hanoi(disks / 3 - 1, target, temp, source);
            printf("move disk from %c to %c 
    ", temp , target);
            printf("move disk from %c to %c 
    ", temp , target);
            printf("move disk from %c to %c 
    ", temp , target);
            
            hanoi(disks / 3 - 1, source, target, temp);
            printf("move disk from %c to %c 
    ", target , temp);
            printf("move disk from %c to %c 
    ", target , temp);
            
            hanoi(disks / 3 - 1, temp, source, target);
            printf("move disk from %c to %c 
    ", source , temp);
            
            for(i = disks / 3 - 1; i > 0; i--)
            {
                if(i > 1)
                {
                    hanoi(i - 1, target, source, temp);
                }
                printf("move disk from %c to %c 
    ", target, source);
                printf("move disk from %c to %c 
    ", target, source);
                if(i > 1)
                {
                    hanoi(i - 1, temp, source, target);
                }
                printf("move disk from %c to %c 
    ", source, temp);
            }
        }
    }
    
    int main()
    {
        int n;
        printf("请输入盘数:");
        scanf("%d", &n);
        
        hanoi3colors(n);
        
        return 0;
    }
  • 相关阅读:
    8. 使用Java+TestNG+Selenium搭建测试框架做Web UI自动化测试
    7. Selenium的基本使用
    6. Selenium测试工具简介
    4.自动化测试框架及知识体系
    3.当前主流自动化测试工具的对比选型
    2.自动化测试策略
    1.自动化测试概述
    eclipse工程当中的.classpath 和.project文件什么作用?
    Git 命令
    删除指定字符串的算法题,面试时候没做出来
  • 原文地址:https://www.cnblogs.com/libra-yong/p/6296346.html
Copyright © 2011-2022 走看看