zoukankan      html  css  js  c++  java
  • UVA 10795 新汉诺塔问题

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1736

    http://7xjob4.com1.z0.glb.clouddn.com/c2dd6437bf7bef120bf27475f3097822

    题意:至少多少步将当前局面状态移动后到指定局面状态

    思路:先考虑最大的那个盘子,将它移到最终位置,那么参考局面为其中一个柱子为空,一个为只有最大,一个为最小到第二大。答案为初始局面移到参考局面+1+最终状态移到参考局面(可逆)。将一个柱子整体移到另一个,需2^(n-1)-1步。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,sta[65],fin[65];
     5 int cas=1;
     6 
     7 long long f(int p[],int i,int fina)
     8 {
     9     if(i==0)    return 0;
    10     if(p[i]==fina)  return f(p,i-1,fina);
    11     return f(p,i-1,6-p[i]-fina)+(1ll << (i-1));
    12 }
    13 
    14 int main()
    15 {
    16     int i,j;
    17     while(scanf("%d",&n)!=EOF && n!=0)
    18     {
    19         for(i=1;i<=n;i++)
    20         {
    21             scanf("%d",&sta[i]);
    22         }
    23         for(i=1;i<=n;i++)
    24         {
    25             scanf("%d",&fin[i]);
    26         }
    27 
    28         int k=n;
    29         while(k>=1 && sta[k]==fin[k])   k--;
    30 
    31         long long ans=0;
    32         if(k>0)
    33         {
    34             ans=f(sta,k-1,6-sta[k]-fin[k])+f(fin,k-1,6-sta[k]-fin[k])+1;
    35         }
    36         printf("Case %d: %lld
    ",cas++,ans);
    37     }
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    ps一寸照片
    作用域链词法分析
    ajax加上随机数可以强制刷新网页
    ajaxStar,ajaxStop开始时候加载图片,加载完成之后去掉图片
    布尔变量 转换
    将2016-11-02转化成二零一六年十一月二日
    日期函数
    js数据类型
    编写页面分析
    小三角
  • 原文地址:https://www.cnblogs.com/cyd308/p/5644818.html
Copyright © 2011-2022 走看看