zoukankan      html  css  js  c++  java
  • Codeforces Gym 100114 A. Hanoi tower 找规律

    A. Hanoi tower

    Time Limit: 1 Sec  

    Memory Limit: 256 MB

    题目连接

    http://codeforces.com/gym/100114

    Description

    you the conditions of this task. There are 3 pivots: A, B, C. Initially, n disks of different diameter are placed on the pivot A: the smallest disk is placed on the top and every next one is placed in an increasing order of their diameters. The second and the third pivots are still empty. You have to move all the disks from pivot A to pivot B, using pivot C as an auxiliary. By one step you can take off 1 upper disk and put it either on an empty pivot or on another pivot over a disk with a bigger diameter. Almost all books on programming contain a recursive solution of this task. In the following example you can see the procedure, written in Pascal. Procedure Hanoi (A, B, C: integer; N:integer); Begin If N>0 then Begin Hanoi (A, C, B, N-1); Writeln(‘диск ’, N, ‘ from ‘, A, ‘ to ‘, B); Hanoi (C, B, A, N-1) End End; The number of step Disk From To Combination 0. AAA 1. 1 A B BAA 2. 2 A C BCA 3. 1 B C CCA 4. 3 A B CCB 5. 1 C A ACB 6. 2 C B ABB 7. 1 A B BBB It is well known that the solution given above requires (2n –1) steps. Taking into account the initial disposition we totally have 2n combinations of n disks disposition between three pivots. Thus, some combinations don’t occure during the algorithm execution. For example, the combination «CAB» will not be reached during the game with n = 3 (herein the smallest disk is on pivot C, the medium one is on pivot A, the biggest one is on pivot B). Write a program that establishes if the given combination is occurred during the game.

    Input

    The first line of an input file contains a single integer n – the number of disks, and the second line contains n capital letters (“A”, “B” or “C”) – the disposition of the n disks between the pivots. The first (leftmost) letter designates position (a pivot name) of the smallest disk, the second letter – position of the second lagest, and so on…
    1 ≤ n ≤ 250

    Output

    The output file must contain “YES” or “NO” depending on the reachability of the disks disposition during the game.

    Sample Input

    3

    ACB

    Sample Output

    YES

    HINT

     

    题意

    汉诺塔,给你个状态,问你由题中所给的代码是否能跑到这个状态

    题解:

    找规律,找规律……

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    
    int n,flag;
    char s[400];
    
    int movef(int x,char a,char b,char c)
    {
        if(x==1)
        {
            if(s[x-1]==a||s[x-1]==b) return 1;
        }
        else
        {
            if(s[x-1]==a) return movef(x-1,a,c,b);
            if(s[x-1]==b) return movef(x-1,c,b,a);
        }
        return 0;
    }
    
    main()
    {
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        scanf("%d",&n);
        scanf("%s",s);
        flag=movef(n,'A','B','C');
        if(flag) printf("YES
    ");else printf("NO
    ");
    }
  • 相关阅读:
    JS中常用的小代码整理
    (转)jquery each解析数组 json xml
    <转>如何做一个好的前端重构工程师
    js代码收集(1)
    firefox与ie 的javascript区别
    js模板渲染
    .NET平台下WEB应用程序的部署(安装数据库和自动配置)
    关于项目管理的思考
    随机数的生成(Asp.Net,C#)
    一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4780539.html
Copyright © 2011-2022 走看看