给定三个体积为12 ,8 ,5的木桶,桶内装有12 ,0,0的油,怎么样利用这三个桶倒出6体积的油。
package cn.hdu;
public class Dfs {
//深搜
private static void searchDFS(int[] a, int[] volume,Parent parent) {
//记录路径
parent=new Parent(a, parent);
//递归鸿沟
if(isRepeat(parent))
return;
//判断是否符合
if(isSearch(parent))
return;
//递归搜索
//每个桶除了不倒给自己,都可以倒给其他桶
for (int i = 0; i < volume.length; i++) {
for (int j = 0; j < volume.length; j++) {
if (j == i)
continue;
int surplus = volume[j] - a[j];//能再装?v
int add = 0;//往j桶加?v
if (surplus >= a[i]) {
add = a[i];
a[i] = 0;
} else {
add = surplus;
a[i] -= add;
}
a[j] += add;
searchDFS(a, volume,parent);//遍历下去
a[j] -= add;//还原
a[i] += add;
}
}
}
//判断此次结果前面有没有出现,出现过,返回true,不再深搜下去
private static