JAVA之渔夫分鱼的问题
问题描述:
* 甲、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。
* 当晚返航时,他们发现有7筐装满了鱼,
* 还有7筐只装了半筐鱼,另外7筐则是空的。
* 由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的
* ,7个半筐鱼的重量也是相等的。在不将鱼倒出来的前提下
* ,怎么将鱼和筐平分为三份?
*
如图所示:
代码如下:
/**
*
*/
package javaLearn;
/**
* @author Administrator
*qq:1012885458
*/
public class 渔夫分鱼 {
// 满 半满 空 1满 每个人都平分到3.5个
public static void main(String[] args) {
//用个二维数组来存储三个渔民的方案;
int [][] fishMan=new int[3][3];
System.out.println("可能存在的分配方案:");
for(int m=1;m<=3;m++) {
//m代表第一个人分配到的满框数;
fishMan[0][0]=m;
fishMan[0][1]=(int)((3.5-m)/0.5);//通过m计算半框数;
fishMan[0][2]=7-fishMan[0][0]-fishMan[0][1];
for(int n=1;n<=3;n++) {
//第二个
if(n<m) continue;//减少循环次数
fishMan[1][0]=n;
fishMan[1][1]=(int)((3.5-n)/0.5);
if(fishMan[1][1] <0) break;
fishMan[1][2]=7-fishMan[1][0]-fishMan[1][1];
for(int p=1;p<=3;p++) {
//第三个
if(p<n||p+n+m!=7) continue;
fishMan[2][0]=p;
fishMan[2][1]=(int)((3.5-p)/0.5);
if(fishMan[2][1]<0) break;
fishMan[2][2]=7-fishMan[2][0]-fishMan[2][1];
//条件满足,输出结果
if(fishMan[2][1]+fishMan[1][1]+fishMan[0][1]==7&&
fishMan[2][0]+fishMan[1][0]+fishMan[0][0]==7
) {
System.out.println(" 满框数 半框数 空框数 ");
for(int i=0;i<3; i++ ) {
System.out.println(i+": "+fishMan[i][0]+" "+fishMan[i][1]+" "+fishMan[i][2]);
}
System.out.println("========================");
break;
}
}
}
}
}
}