问题如下:
第一个桶装30升水,第二个桶容量是13升,第三个桶容量是17升,如何用最少的步骤,将30升的水分成2份,每个桶装15升水。
我是新手,对数据结构方面不懂,请高手指导一下了,用到了什么数据结构 和算法 ,谢谢了

解决方案 »

  1.   


    public class Bucket {
    public static void main(String[] args) {
    int[] a = { 30, 30 };
    int[] b = { 17, 0 };
    int[] c = { 13, 0 };
    int count = 0;
    System.out.println("A    " + "B    " + "C    ");
    while (true) {
    if (a[1] == 15)
    break;
    count++;
    a[1] = a[1] - (c[0] - c[1]);
    c[1] = c[0];
    System.out.println(a[1] + "   " + b[1] + "    " + c[1] + "    ");
    if (a[1] == 15)
    break;
    count++;
    int temp = b[1];
    b[1] = (temp + c[1]) > b[0] ? b[0] : (temp + c[1]);
    c[1] = (temp + c[1]) > b[0] ? (c[1] - (b[0] - temp)) : 0;
    System.out.println(a[1] + "   " + b[1] + "    " + c[1] + "    ");
    if (b[1] == b[0]) {
    a[1] = a[1] + b[1];
    b[1] = 0;
    System.out.println(a[1] + "   " + b[1] + "    " + c[1] + "    ");
    count++;
    b[1] = c[1];
    c[1] = 0;
    count++;
    System.out.println(a[1] + "   " + b[1] + "    " + c[1] + "    ");
    }
    }
    System.out.println("一共" + count + "次就OK了");
    }
    }