5 solutions

  • 0
    @ 2025-4-20 9:24:32
    #include <bits/stdc++.h>
    using namespace std;
    
    // 汉诺塔递归函数
    // 参数说明:
    // n: 当前要移动的盘子数量
    // from: 起始柱
    // to: 目标柱
    // aux: 辅助柱
    void hanoi(int n, char from, char to, char aux) {
        if (n == 1) {
            // 当只剩一个盘子时,直接移动到目标柱
            cout << from << "->" << n << "->" << to << endl;
            return;
        }
        
        // 1. 将上方 n-1 个盘子从起始柱移动到辅助柱(借助目标柱)
        hanoi(n - 1, from, aux, to);
        
        // 2. 将第 n 个盘子从起始柱移动到目标柱
        cout << from  << "->" << n << "->" << to << endl;
        
        // 3. 将 n-1 个盘子从辅助柱移动到目标柱(借助起始柱)
        hanoi(n - 1, aux, to, from);
    }
    
    int main() {
        int n;
        cin >> n;
        char a,b,c;
        cin >> a >> b >> c;
        // 调用汉诺塔函数,初始从A柱移动到C柱,B柱作为辅助
        hanoi(n, a, b, c);
        
        return 0;
    }
    
    • 0
      @ 2025-1-23 10:32:47
      #include<bits/stdc++.h>
      using namespace std;void hn(int n,char a,char b,char c){if(n==1){cout<<a<<"->"<<n<<"->"<<b<<endl;}else{hn(n-1,a,c,b);cout<<a<<"->"<<n<<"->"<<b<<endl;hn(n-1,c,b,a);}}int main(){int n;char a,b,c;cin>>n>>a>>b>>c;hn(n,a,b,c);return 0;}
      
      • 0
        @ 2025-1-12 13:57:58
        #include<bits/stdc++.h>
        using namespace std;
        void lkj(int n,char a,char b,char c)
        {
        	if(n==1)
        	{
        		cout<<a<<"->"<<n<<"->"<<b<<endl;
        	}
        	else
        	{
        		lkj(n-1,a,c,b);
        		cout<<a<<"->"<<n<<"->"<<b<<endl;
        		lkj(n-1,c,b,a);
        	}
        }
        int main()
        {
        	int n;
        	char a,b,c;
        	cin>>n>>a>>b>>c;
        	lkj(n,a,b,c);
        	return 0;
        }
        • 0
          @ 2024-10-16 19:01:26
          #include<bits/stdc++.h>
          using namespace std;
          void lkj(int n,char a,char b,char c)
          {
          	if(n==1)
          	{
          		cout<<a<<"->"<<n<<"->"<<b<<endl;
          	}
          	else
          	{
          		lkj(n-1,a,c,b);
          		cout<<a<<"->"<<n<<"->"<<b<<endl;
          		lkj(n-1,c,b,a);
          	}
           } 
          int main()
          {
          	int n;
          	char a,b,c;
          	cin>>n>>a>>b>>c;
          	lkj(n,a,b,c);
          	return 0;
          }
          
          • -4
            @ 2024-8-17 14:53:10
            #include<bits/stdc++.h>
            using namespace std;
            void h(int x,char a,char b,char c)
            {
            	if(x==1)
            	{
            		cout<<a<<"->"<<x<<"->"<<b<<endl;
            	}
            	else
            	{
            		h(x-1,a,c,b);
            		cout<<a<<"->"<<x<<"->"<<b<<endl;
            		h(x-1,c,b,a);
            	}
            }
            	int main()
            	{
            		int n;
            		char a,b,c;
            		cin>>n>>a>>b>>c;
            		h(n,a,b,c);
            		
            	}
            
          • 1

          Information

          ID
          940
          Time
          1000ms
          Memory
          256MiB
          Difficulty
          3
          Tags
          (None)
          # Submissions
          110
          Accepted
          34
          Uploaded By