JAVA之渔夫分鱼的问题

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;
					}
				}
			}
			
		}
	}	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值