汉诺塔问题:古代有一个梵塔,塔内有三个座A,B,C,A座上有n个盘子,盘子大小不等大的在下,小的在上。有一个和尚想把这n个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上,程序
如下:
#include<iostream>
using namespace std;
void hanoi (int n,char a,char b,char c){
if(n==1)
cout<<n<<" "<<a<<" "<<c<<endl;
else(
hanoi(n-l a,c,b);
cout<<n<<” "<<a<<” "<<c<<endl;
hanoi(n-l,b,a,c);
int main(){
int n;
cin>>n;
hanoi(n,'a','B','C');
return 0;
当n>=0时,程序不会出现死循环。
输出共有2"行
当 n>0 时,将第4行的“==”改为“<=”,程序输出结果必定不变
将第5行的“n"改为“1”,程序输出结果必定不变。()
此程序的时间复杂度是()。
O(n)
O(n2)
O(n3)
O(2n)
要求输出不超过15行,则下列哪个n的值是合法的?
0
4
5
6
发表评论