[C趣味编程]甲乙丙渔夫分鱼

甲、乙、丙三位渔夫出海打渔,他们随船带了21个筐。 当晚返航时,他们发现有七个筐装满了鱼,还有七个筐装了半筐鱼,另外七只则是空的。 由于他们没有秤,只好通过目测认为7个满筐的重量是相等的,七个半筐的重量是相等的。
    在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份? 解答: 总数 = 7+7*0.5=10.5 每个人应得数量 = 10.5/3 = 3.5

 

解答分析:


[C趣味编程]甲乙丙渔夫分鱼_第1张图片

/**
 * 甲、乙、丙三位渔夫出海打渔,他们随船带了21个筐。 
 * 当晚返航时,他们发现有七个筐装满了鱼,还有七个筐装了半筐鱼,另外七只则是空的。 
 * 由于他们没有秤,只好通过目测认为7个满筐的重量是相等的,七个半筐的重量是相等的。
 * 在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份? 
 * 
 * 解答: 总数 = 7+7*0.5=10.5 每个人应得数量 = 10.5/3 = 3.5
 */
public class A {

    /**
     * @param args
     */
    public static void main(String[] args) {
        for (int i = 0; i <= 2; i++) {
            for (int j = i; j <= 3; j++) {
                int k = 7 - i - j;
                if(k < j)continue;
                int ii = (int) ((3.5 - i) * 2);
                int jj = (int) ((3.5 - j) * 2);
                int kk_row = (int) ((3.5 - k) * 2);
                int kk_line = 7 - ii - jj;
                if (kk_row == kk_line && kk_line > 0) {
                    print(i, ii, 7 - i - ii, j, jj, 7 - j - jj, k, kk_row, 7 - k - kk_row);
                }
            }
        }

    }

    public static void print(int i, int ii, int iii, int j, int jj, int jjj, int k, int kk, int kkk) {
        System.out.println("甲:" + i + " " + ii + " " + iii);
        System.out.println("乙:" + j + " " + jj + " " + jjj);
        System.out.println("丙:" + k + " " + kk + " " + kkk);
        System.out.println("----------");
    }

}

 

结果:

甲:1 5 1
乙:3 1 3
丙:3 1 3
--------------
甲:2 3 2
乙:2 3 2
丙:3 1 3
--------------

你可能感兴趣的:(编程,C++,c,C#,J#)