8 条题解

  • 6
    @ 2023-7-21 13:16:19

    image

    题解

    // 输出:前n个盘子从a柱子挪到b柱子(利用c柱子)的步骤
    void h(int n, char a, char b, char c)
    {
        if (n == 1)
        {
            cout << a << "->" << n << "->" << b << endl;
            return;
        }
        // 把前n-1个盘子,从a挪到c(利用b柱子)
        h(n - 1, a, c, b);
        // 把n号盘子,从a挪到b
        cout << a << "->" << n << "->" << b << endl;
        // 把前n-1个,从c挪到b(利用a柱子)
        h(n - 1, c, b, a);
    }
    
    • 2
      @ 2023-7-23 19:28:57

      yasuo

      #include <iostream>
      void h(int n,char a,char b,char c){
          if(n==1){std::cout<<a<<"->"<<n<<"->"<<b<<"\n";return;}
          h(n-1,a,c,b);std::cout<<a<<"->"<<n<<"->"<<b<<"\n";
          h(n-1,c,b,a);}
      int main(){
          int q;char a,b,c;std::cin>>q>>a>>b>>c;
          h(q,a,b,c);return 0;}
      
      • 2
        @ 2023-7-22 10:29:37
        #include <iostream>
        using namespace std;
        // 输出:前n个盘子从a柱子挪到b柱子(利用c柱子)的步骤
        void h(int n, char a, char b, char c)
        {
        if (n == 1)
        {
        cout<< a <<"->"<< n <<"->"<< b <<endl;
        return;
        }
        // 把前n-1个盘子,从a挪到c(利用b柱子)
        h(n - 1,a , c , b);
        // 把n号盘子,从a挪到b
        cout << a << "->" << n << "->" << b << endl;
        // 把前n-1个,从c挪到b(利用a柱子)
        h(n - 1, c, b, a);
        }
        int main()
        {
        int n;
        char a,b,c;
        cin >> n >> a >> b >> c;
        h(n, a, b, c);
        return 0;
        }
        
        
        • 1
          @ 2023-8-15 21:59:40
          #include <bits/stdc++.h>
          using namespace std;
          
          void ph(int n,char a,char b,char c)
          {
              if(n == 1)
              {
                  cout << a << "->" << n << "->" << b << endl;
                  return;
              }
              else
              {
                  ph(n - 1,a,c,b);
                  cout << a << "->" << n << "->" << b << endl;
                  ph(n - 1,c,b,a);
              }
          }
          
          int main()
          {
              int n;
              char a,b,c;
              cin >> n >> a >> b >> c;
              ph(n,a,b,c);
              return 0;
          }
          

          我又来编了…… HXmagician --- Pohuang --- ?

          • 1
            @ 2023-7-21 21:11:14

            做题之前,先想明白两件事:

            1、边界条件:当只有一个盘子时,cout << a << "->" << n << "->" << b << endl;

            2、做这个问题主要分3步:

            第一步:把第1~n-1个盘子通过柱子b从柱子a挪到柱子c上

            第二步:把第n个盘子从柱子a挪到柱子b上

            第三步:把第1~n-1个盘子通过柱子a从柱子c挪到柱子b上

            #include <iostream>
            using namespace std;
            
            void output(int n,char a,char b,char c)
            {
                if(n == 1)
                {
                    cout << a << "->" << n << "->" << b << endl;//边界条件
                    return;
                }
                else
                {
                    output(n - 1,a,c,b);//第一步
                    cout << a << "->" << n << "->" << b << endl;//第二步
                    output(n - 1,c,b,a);//第三步
                }
            }
            
            int main()
            {
                int n;
                char a,b,c;
                cin >> n >> a >> b >> c;
                output(n,a,b,c);
                return 0;
            }
            
            • 0
              @ 2024-5-8 13:39:51
              #include <iostream>
              void h(int n,char a,char b,char c){
                  if(n==1){std::cout<<a<<"->"<<n<<"->"<<b<<"\n";return;}
                  h(n-1,a,c,b);std::cout<<a<<"->"<<n<<"->"<<b<<"\n";
                  h(n-1,c,b,a);}
              int main(){
                  int q;char a,b,c;std::cin>>q>>a>>b>>c;
                  h(q,a,b,c);return 0;}
              
              
              • 0
                @ 2023-7-21 19:46:42
                #include <iostream>
                using namespace std;
                void h(int n, char a, char b, char c)
                {
                if (n == 1)
                {
                cout << a << "->" << n << "->" << b << endl;
                return;
                }
                h(n - 1, a, c, b);
                cout << a << "->" << n << "->" << b << endl;
                h(n - 1, c, b, a);
                }
                int main()
                {
                int n;
                char a, b, c;
                cin >> n >> a >> b >> c;
                h(n, a, b, c);
                }
                
                • 0
                  @ 2023-7-21 18:08:36

                  #include <iostream> using namespace std; // 输出:前n个盘子从a柱子挪到b柱子(利用c柱子)的步骤 void h(int n, char a, char b, char c) { if (n == 1) { cout << n << " " << a << " " << b << endl; return; } // 把前n-1个盘子,从a挪到c(利用b柱子) h(n - 1, a, c, b); // 把n号盘子,从a挪到b cout << n << " " << a << " " << b << endl; // 把前n-1个,从c挪到b(利用a柱子) h(n - 1, c, b, a); } int main() { int n; cin >> n; h(n, 'a', 'b', 'c'); return 0; } 这个就核桃上面的……没人会来看题解吧

                  • 1

                  信息

                  ID
                  314
                  时间
                  1000ms
                  内存
                  128MiB
                  难度
                  5
                  标签
                  递交数
                  1410
                  已通过
                  490
                  上传者