平分油的问题:
问题的描述:
一个人体积为30 升的油桶,装满了油,另有两个完全空的桶,一个体积为17升,另一个体积为13升。试用c++面向程序设计的类结构写出程序,求解油的平分最少的步骤,输出平分时的具体的倒油过程。
注:油的平分结构为30升的桶里面有15升的 油,17升的桶里面有15升的油。
解题思路:
本题使用的是深度优先遍历的方法,具体的操作在代码里面有注释
代码展示:
```cpp
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
class Status{
public:
int vol[3];//三个容器中的油量
int step;//从初始状态到当前状态的步骤数
string str;//从初始状态到当前状态的操作过程,倒油的过程
Status(int step,int V30,int V17,int V13,string str);//构造函数
};
Status::Status(int step,int V30,int V17,int V13,string str){
this->step=step;
vol[0]=V30;
vol[1]=V17;
vol[2]=V13;
this->str=str;
}
int size[]={30,17,13};//定义油桶的体积
bool vis[30][17][13];//用来判断当前的节点是否便利过
void dfs(Status now){
vis[now.vol[0]][now.vol[1]