Re: 变态辣椒怎么不画漫画了# Joke - 肚皮舞运动
z*8
1 楼
#include
using namespace std;
#include
#include
class Tower{
private:
int index;//indicate the number of tower
stack one_tower;
public:
Tower(int i=0):index(i){}//constructor
int getindex();
void add(int d);
void moveTopTo(Tower t);
void print();
void moveDisks(int n,Tower Destination,Tower buffer);
};
int Tower::getindex()
{
return index;
}
void Tower::add(int d)
{
if((!one_tower.empty())&&(d>one_tower.top()))
cout<else
one_tower.push(d);
}
void Tower::moveTopTo(Tower t)
{
cout<t.add(one_tower.top());
one_tower.pop();
//cout< }
void Tower::print()
{
cout<while(one_tower.top())
{
cout< one_tower.pop();
};
cout< }
void Tower::moveDisks(int n,Tower Destination,Tower buffer)
{
cout<Destination.getindex()<if(n>0)
{
moveDisks(n-1,buffer,Destination);
cout<moveTopTo(Destination);
buffer.moveDisks(n-1,Destination,*this);
}
}
//End definition of class Tower
void Towers_of_Hanoi()//this function used to move n disks from tower0 to
tower2
{
int n=3;
vector towers;
for(int i=0;i<3;i++)
{
Tower *pp = new Tower(i);
towers.push_back(*pp);
delete pp;
}
for(int j=n;j>0;j--)
towers[0].add(j);
towers[0].moveDisks(n,towers[2],towers[1]);
}
void main()
{
Towers_of_Hanoi();
}
几乎按着书上给的答案写的,唯一的区别是我把要移动的总数换成了3(方便debug),
自己设置了一些debug的句子,发现是在buffer调用moveDisks后,n=1的时候应该把
value1从tower2 move到tower1的时候,此时moveTopTo(Destination)没法执行,给出
的信息是“expresssion:deque iterator not dereferencable " 求解释。。。
using namespace std;
#include
#include
class Tower{
private:
int index;//indicate the number of tower
stack
public:
Tower(int i=0):index(i){}//constructor
int getindex();
void add(int d);
void moveTopTo(Tower t);
void print();
void moveDisks(int n,Tower Destination,Tower buffer);
};
int Tower::getindex()
{
return index;
}
void Tower::add(int d)
{
if((!one_tower.empty())&&(d>one_tower.top()))
cout<else
one_tower.push(d);
}
void Tower::moveTopTo(Tower t)
{
cout<t.add(one_tower.top());
one_tower.pop();
//cout<
void Tower::print()
{
cout<while(one_tower.top())
{
cout<
};
cout<
void Tower::moveDisks(int n,Tower Destination,Tower buffer)
{
cout<Destination.getindex()<if(n>0)
{
moveDisks(n-1,buffer,Destination);
cout<moveTopTo(Destination);
buffer.moveDisks(n-1,Destination,*this);
}
}
//End definition of class Tower
void Towers_of_Hanoi()//this function used to move n disks from tower0 to
tower2
{
int n=3;
vector
for(int i=0;i<3;i++)
{
Tower *pp = new Tower(i);
towers.push_back(*pp);
delete pp;
}
for(int j=n;j>0;j--)
towers[0].add(j);
towers[0].moveDisks(n,towers[2],towers[1]);
}
void main()
{
Towers_of_Hanoi();
}
几乎按着书上给的答案写的,唯一的区别是我把要移动的总数换成了3(方便debug),
自己设置了一些debug的句子,发现是在buffer调用moveDisks后,n=1的时候应该把
value1从tower2 move到tower1的时候,此时moveTopTo(Destination)没法执行,给出
的信息是“expresssion:deque iterator not dereferencable " 求解释。。。