6 solutions

  • 7
    @ 2023-11-24 21:09:09
    #include <bits/stdc++.h>
    using namespace std;
    // n 是 B 部分,1 ~ n - 1 是 A 部分,s 是起始塔,e 是目标塔,m 是辅助塔
    void hnt(int n,char s,char e,char m){
    	if(n == 1){	// 如果只有一个盘子
    		printf("%c->%d->%c\n",s,n,e);
    		return;
    	}
    	hnt(n - 1,s,m,e);	// 将 A 部分移到辅助塔
    	printf("%c->%d->%c\n",s,n,e);	// 将 B 部分移到目标塔
    	hnt(n - 1,m,e,s);	// 将 A 部分再移回目标塔
    }
    int main(int argc, char **argv){
    	int n;char start,end,mid;
    	cin >> n >> start >> end >> mid;
    	hnt(n,start,end,mid);
    	return 0;
    }
    
  • 1
    @ 2025-2-3 18:12:46
    #include <bits/stdc++.h>
    using namespace std;
    int n, ans,sum;
    void hs(int n, char s, char mid, char e)
    {
    	if(n==0) return;
    	hs(n - 1, s, e, mid);
    	printf("%c->%d->%c\n", s, n, e);//这是最大的移动的一步 
    	sum++;
    	hs(n - 1,mid, s, e);
    	
    }
    int main()
    {
    	char a, b ,c;
    	cin >> n >> a >> b >> c;
    	hs(n, a, c, b);
    	cout<<endl<<sum;
    	return 0;
    }//可以用算式:f(n)=2^n-1 
    
    
  • 0
    @ 2023-12-25 22:00:10
    #include <bits/stdc++.h>
    using namespace std;
    void hnt(int n,char s,char e,char m){
    	if(n==1){
    		printf("%c->%d->%c\n",s,n,e);
    		return;
    	}
    	hnt(n - 1,s,m,e);
    	printf("%c->%d->%c\n",s,n,e);
    	hnt(n - 1,m,e,s);
    }
    signed main(){
    	int n;
    	char start,end,mid;
    	cin>>n>>start>>end>>mid;
    	hnt(n,start,end,mid);
    	return 0;
    }
    
    • -1
      @ 2024-1-23 10:39:44
      #include<bits/stdc++.h>
      
      using namespace std;
      
      
      void dreamdashe(int floor,char str,char mid,char tar){
      	if(floor > 1){
      		dreamdashe(floor - 1,str,tar,mid);
      	}
      	cout << str << "->" << floor << "->" << tar << endl;
      	if(floor > 1){
      		dreamdashe(floor - 1,mid,str,tar);
      	}
      }
      
      int main(){
      	int a;
      	char b,c,d;
      	cin >> a >> b >> c >> d;
      	dreamdashe(a,b,d,c);
       	return 0;
      }
      
      • -7
        @ 2023-11-24 21:15:56
        #include<iostream>/*引用头文件*/
        using namespace std;/*声明命名空间*/ 
        void hnt(int n,char a,char b,char c){
        	if(n==1)/*边界条件*/
        		cout
        		<<a
        		<<"->"
        		<<1
        		<<"->"
        		<<b
        		<<"\n";
        		/*
        		挪一下
        		a是起点
        		b是终点
        		*/
        	else
        		hnt(n-1,a,c,b);/*挪动n-1*/ 
        		cout
        		<<a
        		<<"->"
        		<<n
        		<<"->"
        		<<b
        		<<"\n";
        		/*
        		挪一下
        		a是起点
        		b是终点
        		*/
        		hnt(n-1,c,b,a);/*挪动n-1*/ 
        }
        int main(){
        	int n;
        	char a,b,c;
        	cin
        	>>n
        	>>a
        	>>b
        	>>c;
        	/*输入*/ 
        	hnt(n,a,b,c);/*“地柜”移动*/
        }
        
      • -10
        @ 2023-11-24 21:07:35
        #include<iostream>
        using namespace std;
        void h(int n,char a,char b,char c){
        	if(n==1)cout<<a<<"->"<<1<<"->"<<b<<"\n";
        	else{
        		h(n-1,a,c,b);
        		cout<<a<<"->"<<n<<"->"<<b<<"\n";
        		h(n-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
      691
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      6
      Tags
      # Submissions
      160
      Accepted
      53
      Uploaded By