6 solutions
-
7
#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
#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
#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
#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
#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);/*“地柜”移动*/ }
- 1
Information
- ID
- 691
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 160
- Accepted
- 53
- Uploaded By