竞赛
考级
亚洲卷王 AK IOI
这题可以递归,dfs(inth,charstart,charend,charmiddle)dfs(int h, char start, char end, char middle)dfs(inth,charstart,charend,charmiddle) 表示 hhh 个盘子要从 startstartstart 盘移动到 endendend 盘,借助 middlemiddlemiddle 盘,则需要先把 h−1h-1h−1 个盘子从 startstartstart 盘移动到 middlemiddlemiddle 盘借助 endendend 盘,然后将第 hhh 个盘移动到 endendend 盘,然后将 middlemiddlemiddle 上的 n−1n-1n−1 个盘,移动到 endendend 盘借助 startstartstart 盘,当没有盘的时候返回。
AC君
代码如下,比较基础,解说在注释里
紫幽梦魇Grimm
纳西妲赋予了我超乎常人智慧
复仇者_纳西妲厨一位
cat
宏也能递归捏
ACGO
私密马赛
nc小鬼,我吃柠檬!!!
苏联老兵申请吃螺!!!!
北大西洋公约
#include<bits/stdc++.h> using namespace std; map<string,int> mp; int n; void f(int n,char a,char b,char c) { if(n==0)return; f(n-1,a,c,b); printf("%c --%d--> %c\n",a,n,c); f(n-1,b,a,c); } int main() { int n; cin>>n; f(n,'A','B','C'); return 0; }
????????????????
#include<iostream> using namespace std; void hannuo(int n, char a, char b, char c) { if (n == 1) { cout << a << " --" << n << "--> " << c << endl; } else { hannuo(n - 1, a, c, b); cout << a << " --" << n << "--> " << c<< endl; hannuo(n - 1, b, a, c); } } int main() { int n; cin >> n; hannuo(n, 'A', 'B', 'C'); return 0; }
鬼影之魂
SZY2077 ด้้้้้็
这题也是非常简单,题目上已经标注出了知识点——递归。 递归就是一个函数在它的函数体内调用它自身,执行递归函数将反复调用其自身,每调用一次就进入新的一层,而且它必须有结束的条件。 听着很复杂,但理解了就很简单了。 这是递归函数的特点 循环能干的事,递归都能干;递归能干的循环不一定能干 一句话总结递归:自我调用且有完成状态。 说了这么多,我们上代码。(注释看程序里的) 这就是本题的题解,有点过于EASY了。
Sleepy~yo
疯小害
#include<iostream> using namespace std; long long n; string so = "A", dest = "C"; string mid = "B"; void hanoi(long long n, string so, string mid, string dest){ if (n==1){ cout<<so<<" --"<<n<<"--> "<<dest<<endl; return ; } hanoi(n-1, so, dest, mid); cout<<so<<" --"<<n<<"--> "<<dest<<endl; hanoi(n-1, mid, so, dest); } int main(){ cin>>n; hanoi(n, so, mid, dest); return 0; } 还是不太懂递归的思路
此账号已注销
༺ཌༀ元气满满ༀད༻
#include<bits/stdc++.h> using namespace std; void lz(int n,char a,char b,char c){ if(n<=0) return; lz(n-1,a,c,b); printf("%c --%d--> %c\n",a,n,c); lz(n-1,b,a,c); } int main(){ int n; cin>>n; lz(n,'A','B','C'); return 0; }
霄
枫岚