zoukankan      html  css  js  c++  java
  • 汉诺塔

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5   int T, n, i;
     6   cin >> T;
     7   int x[100];
     8   while (T--)
     9   {
    10     cin >> n;
    11     for (i = 1; i <= n; i++)
    12       cin >> x[i];
    13     int cur = 3; //表示当前 金片应该在的针的编号 ,初始时表示最大的那个应当在3上
    14     int ans = 0;
    15     for (i = n; i > 0; i--) //从最大的开始
    16     {
    17       if (x[i] != cur) // 如果第i个金片的不在cur上 ,最好的情况下把它移到cur上需要 2^(n-1) 步
    18       {
    19         cur = 6 - cur - x[i];  // 根据第i个金片的位置确定第i-1个金片应该在的位置
    20         ans += 1 << (i - 1);
    21       }
    22     }
    23     cout << ans << endl;
    24   }
    25   return 0;
    26 }
    View Code
  • 相关阅读:
    NOI 题库 7084
    NOI 题库 7218
    POJ 2386 题解
    NOI 题库 8465
    NOI 题库 2753
    NOI 题库 1792
    P3709 大爷的字符串题
    初探莫队
    P1026 统计单词题解
    AC自动机小记
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6576073.html
Copyright © 2011-2022 走看看