1. 程式人生 > >簡單全面分析漢諾塔問題!!!!

簡單全面分析漢諾塔問題!!!!

初學者分析漢諾塔問題,更通俗的講就是圓盤移動,其實只要簡單將任意個圓盤分解為兩個總體移動就好!!!!

(簡單通俗易懂,希望能得到大家的支援能幫到大家,也希望能有人能一起討論c++問題,我是學c++的,我也只是個初學者!!!!)

分析來看**a**是目標所在塔,**b**是中轉塔,**c**是目標塔

void yuanpan_zhuanyi(int n, char a, char b, char c)//漢諾塔圓盤轉移問題
{																			 
	if (n == 1)//當只有一個時直接移動即可
	{
		cout << "將第1個圓盤從" << a << "轉移到" << c << endl;
	}
	else
	{
        yuanpan_zhuanyi(n - 1, a, c, b);	
		/*當有多個盤需要移動時,分解看成兩個盤(**上盤U**,**目標盤D**,將U移動到中轉盤b,D移動到目標塔c),
		此時對於U來說c是中轉的。b才是目標*/
		
		cout << "將第" << n << "個圓盤從" << a << "轉移到" << c << endl;
		
		yuanpan_zhuanyi(n - 1, b, a, c);//最後將上盤U移動到C,此時分析知道b是目標所在塔,c目標塔
	}
}



int main()
{
	char a = 'a';
	char b = 'b';
	char c = 'c';
	int n;
	couy<<"你想移動幾個盤到目標塔:";
	cin>>n
	yuanpan_zhuanyi(n, a, b, c);
	return 0;
}		
初學者程式碼,希望能簡單幫到大家,也希望大家能給我帶你支援與交流!!!!!