控制台运行输入数据格式 : xxx(程序名) 3(汉诺塔层数)
会显示出每一步的移动步骤,以及每一柱上留有的盘数
#include<iostream>
#include<sstream>
using namespace std;
int a=0,b=0,c=0;
void hno(int n,char from,char mid,char to)
{
if(n>1)
{
hno(n-1,from,to,mid);
hno(1,from,mid,to);
hno(n-1,mid,from,to);
}
else
{
switch(from)
{
case 'A':a--;break;
case 'B':b--;break;
case 'C':c--;break;
}
switch(to)
{
case 'A':a++;break;
case 'B':b++;break;
case 'C':c++;break;
}
cout<<from<<"-->"<<to<<" A:"<<a<<" B:"<<b<<" C:"<<c<<endl;
}
}
int main(int argc,char *argv[])
{
// cout<<argc<<endl;
// cout<<"_"<<argv[1]<<"_"<<endl;
// return 0;
stringstream s;
int n;//=*argv[1];
s<<argv[1];
s>>n;
//cin>>n;
a=n;
//hno(n,)
hno(n,'A','B','C');
return 0;
}