3 条题解
-
6
哈喽,递归类的问题来了~~~ 遇见递归类的问题不要想太复杂了,只要根据题目的规则来就可以了,具体他是怎么移动的,我们不需要细致的考虑。 如本题:题目很乱,只需要看一下算法思路。 算法思路:
1.如果只有一个金片,则把该金片从源移动到目标棒,结束。
if(n==1) cout<<a<<" To "<<c;
2.如果有n个金片,则把前n-1个金片移动到辅助的棒,然后把自己移动到目标棒,最后再把前n-1个移动到目标棒.
else{ f(n-1,a,c,b); //将前n-1个金片移动到辅助棒B上面 cout<<a<<" To "<<c; //将自己移动到目标棒C上面(n-1个金片已经移动到B上了,则A棒就剩最大的那个了) f(n-1,b,a,c); //将辅助棒B上剩余的n-1个金片移动到目标棒就可 }
主要的事情说三编,遇见递归不要细想,思路出来直接代码🤞
题解不易,点个赞呗👍
-
5
#include <iostream> using namespace std; int a, b, c, n; void abc(int n, char a, char b, char c)//注意这里是 char 类型。 { if (n == 1) { cout << a << " To " << c << endl;//注意要换行。 return;//这里不能 return 0; } abc (n - 1, a, c, b); cout << a << " To " << c << endl; abc (n - 1, b, a, c); } int main () { int m; cin >> m; abc (m, 'A', 'B', 'C');//我们定义的是char类型的,所以要用 '' 不能用""。 }
第一次编写题解,写得不太好,编程水平也不高,请勿喷
- 1
信息
- ID
- 222
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 279
- 已通过
- 114
- 上传者