0
私はハノイ・タワー・プログラムを書いたが、再帰のため出力がA、B、Cピラーを切り替える。アニメーションを作るために柱を維持する方法はありますか? マイコード:再帰的なハノイ塔では、どのように3つの配列(柱)を順番に保つことができますか?
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <windows.h>
using namespace std;
void printTowers(vector<int>& arr1, vector<int>& arr2, vector<int>& arr3)
{
printOut(arr1); //prints vector using iterator
printOut(arr2);
printOut(arr3);
}
//------------
// hanoi(number of disks, source pillar, spare pillar, target pillar)
void hanoi(int d, vector<int>& a, vector<int>& b, vector<int>& c)
{
if(d == 1)
{
c.push_back(a.back());
a.pop_back();
printTowers(a,b,c);
}
else{
hanoi(d-1,a,c,b);
hanoi(1,a,b,c);
hanoi(d-1,b,a,c);
}
}
//------------
int main()
{
int n = 3;
vector <int> A, B, C;
A.reserve(n); B.reserve(n); C.reserve(n);
for(int i=0; i<n; i++)
{
A.push_back(n-i);
}
hanoi(n,A,B,C);
return 0;
}
出力例:
321 | 32 | 3 | | | 2 | | |
| | 1 | 3 | 21 | 3 | 1 | |
| 1 | 2 | 21 | 3 | 1 | 32 | 321|
所望の出力:
321 | 32 | 3 | 3 | | 1 | 1 | |
| | 2 | 21 | 21 | 2 | | |
| 1 | 1 | | 3 | 3 | 32 | 321|
を追加したセルを占有しないように注意してくださいように見えます名前はそれぞれの柱の一部です。 –