泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。 有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。

/*
    泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。
    有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。
    有一次闲暇时,他提出过一个有趣的问题,后称为:“泊松分酒”。
    在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。
    有3个容器,容量分别为12升,8升,5升。其中12升中装满油,另外两个空着。
    要求你只用3个容器操作,最后使得某个容器中正好有6升油。
    下面的列表是可能的操作状态记录:
	12,0,0
	4,8,0
	4,3,5
	9,3,0
	9,0,3
	1,8,3
	1,6,5
    每行3个数据,分别表示12,8,6升容器中的油量
    第一行表示初始状态,第二行表示把12升倒入8升容器后的状态,第三行是8升倒入5升,...
    当然,同一个题目可能有多种不同的正确操作步骤。
    本题目的要求是,请你编写程序,由用户输入:各个容器的容量,开始的状态,
    和要求的目标油量,程序则通过计算输出一种实现的步骤(不需要找到所有可能的方法)。
    如果没有可能实现,则输出:“不可能”。
    例如,用户输入:
	12,8,5,12,0,0,6
    用户输入的前三个数是容器容量(由大到小),接下来三个数是三个容器开始时的油量配置,
    最后一个数是要求得到的油量(放在哪个容器里得到都可以)
    则程序可以输出(答案不唯一,只验证操作可行性):
	12,0,0
	4,8,0
	4,3,5
	9,3,0
	9,0,3
	1,8,3
	1,6,5
    每一行表示一个操作过程中的油量状态。
   注意:
    请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
    请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
    相关的工程文件不要拷入。
    请不要使用package语句。
    源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。  
 */
import java.util.Scanner;
public class Demo16 {
	// 有6种倒酒方法,x[0]->y[0]即("0"->"1")代表第一个瓶子向第二个瓶子倒酒,后即同理
	static int[] x = {0,1, 2};	// 0 为第一个瓶子,1为第二个瓶子 ,2为第三个瓶子
	static int[] y = {1,2, 0};
	static int[][] rr = new int[1000][3];	// 记录倒酒后每一行结果
	static int index = 0;
	static int count = 0;
	static int[] tt= {0,0,0};
	// 输入数据
	public static int[] input(){
		Scanner scan = new Scanner(System.in);
		String [] s = scan.nextLine().split(",");
		int[] temp = new int[s.length];
		for(int i=0;i<s.length;i++){	// 字符转为数字
			temp[i] = Integer.parseInt(s[i]);
		}
		return temp;
	}
	// 输出
	public static void print(int[][] rr){
		for(int i=0;i<index;i++){
			for(int j:rr[i])
				System.out.print(j+"\t");
			System.out.println();
		}
		System.out.println("记录数:("+index+")");
	}
	// 记录步骤
	public static void record(int[] cur){
		rr[index][0] = cur[0];
		rr[index][1] = cur[1];
		rr[index][2] = cur[2];
		index++;
	}
	// 判断当前的记录 是否 在以前的记录里 存在
	public static boolean curExist(int[] cur){
		for(int i=0;i<index;i++){
			if(rr[i][0]==cur[0] && rr[i][1]==cur[1] 
					&& rr[i][2]==cur[2]){
				return true;
			}
		}
		return false;
	}
	// 倒酒
	public static void pour(int[] v,int[] cur,int i){
		count++;	// 统计倒酒的次数, 若倒酒次数超过1000次,则识为"不可能"
		int r = v[y[i]] - cur[y[i]];	// 计算 y瓶中还可以装入多少酒,拿y瓶的总容量-y瓶当前的酒
		if(cur[x[i]] > r){	// x > y 时
			cur[y[i]] = v[y[i]];	// y = 满
			cur[x[i]] -= r;		// x = x - r
		}else{		// x <= y
			cur[y[i]] += cur[x[i]];	// y = y + x
			cur[x[i]] = 0;			// x = x - r
		}
	}
	// 求解
	public static void f(int[] v,int[] cur,int m){
		if(m>v[0]){
			System.out.println("要求得到的油量"+m+"大于最大容器"+v[0]+",所以\n不可能");
			return;
		}
		boolean flag = true;
		record(cur);
		while(flag){
			if(count>1000){
				System.out.println("倒酒次数超过1000次,所以\n不可能");
				return;
			}
			for(int i=0; i<3; i++){	// 6种倒酒方法
				// 找到解,退出
				if(cur[0]==m || cur[1]==m || cur[2]==m){
					print(rr);	// 找到解,输出记录
					flag = false;
					break;
				}
				// 如果 x 瓶中为空,则跳过, 执行下一轮倒酒
				if(cur[x[i]] == 0){	
					continue;
				}
				pour(v,cur,i);// 倒酒
				// 记录步骤
				if(curExist(cur)){
					cur[0] = rr[index-1][0];	// 还原为上次倒酒的值
					cur[1] = rr[index-1][1];
					cur[2] = rr[index-1][2];
					//--index;
					continue;
				}else{
					record(cur);
				}
				
			}
		}
	}
	// 主函数
	public static void main(String[] args){
		System.out.println("输入数据(格式为7个数字用\",\"号隔开,例:)12,8,5,12,0,0,6");
		int[] t = input();		// 输入数据
		int[] v =  {t[0],t[1],t[2]};	// 每个容器的最大容量 v
		int[] cur = {t[3],t[4],t[5]};	// 容器的开始的状态 init
		int m = t[6];		// 要求得到的油量  r
		f(v,cur,m);
	}
}

运行结果:

输入数据(格式为7个数字用","号隔开,例:)12,8,5,12,0,0,6
12,8,5,12,0,0,6
12	0	0	
4	8	0	
4	3	5	
9	3	0	
9	0	3	
1	8	3	
1	6	5	
记录数:(7)

### 回答1: 物理学家在研究自然界的各种现象时,常常需要运用数学工具进行建模和分析。微分几何是一门数学分支,研究的是曲线、曲面等几何对象的性质和变化。由于物理学的研究对象往往涉及到空间曲线、曲面以及它们之间的相互关系,因此微分几何成为了物理学家们进行精确描述和计算的重要工具。 在物理学的研究,微分几何被广泛应用于各个领域。比如,在相对论,通过微分几何的方法可以精确描述和计算时空的弯曲和变换;在量子力学,微分几何可以帮助物理学家对量子态空间进行建模和分析,从而揭示微观粒子的量子行为;在统计物理,微分几何可以用于分析和描述复杂系统的相空间和相流等;在流体力学,微分几何可以帮助研究流体的流动和变形;在物理学的其他各个领域,微分几何的应用也是无处不在。 相较于其他数学工具,微分几何的优势在于它对空间曲线、曲面等几何对象的纤细性质进行分析,并通过微分方程等数学方法来研究它们的性质和变化。通过微分几何的分析,物理学家可以更准确地描述和预测物理现象的发生和变化。因此,微分几何成为物理学家们不可或缺的理论工具之一。 总而言之,物理学家用微分几何pdf是为了在物理学的研究更精确地描述和计算空间曲线、曲面等几何对象的性质和变化,从而揭示物理现象的规律和机制。微分几何在物理学的应用广泛且重要,有效地促进了物理学的发展和进步。 ### 回答2: 物理学家常常使用微分几何pdf(概率密度函数)来描述物理系统的性质和行为。微分几何pdf是一种概率分布函数,用于描述一个连续随机变量的可能取值情况。 在物理学,许多现象和物理量都可以用连续随机变量来描述,如粒子位置、速度、能量等。微分几何pdf可以帮助物理学家理解这些连续变量的分布规律和统计特征。 微分几何pdf的具体形式由物理系统的性质决定,可以是高斯分布、泊松分布、指数分布等。物理学家可以通过实验数据或理论模型来确定系统的微分几何pdf。 利用微分几何pdf,物理学家可以计算和研究各种物理量的期望值、方差、高阶矩等统计特征,从而深入了解系统的性质和规律。例如,在统计力学,微分几何pdf可以用来描述气体分子的速度分布、能量分布等,从而推导出热力学性质。 此外,微分几何pdf还可以帮助物理学家分析和比较不同物理系统之间的行为差异。通过对比微分几何pdf的相似性或差异性,可以揭示出系统之间的相互作用和耦合效应,以及随机性对物理系统的影响。 总之,微分几何pdf是物理学家研究物理系统的重要工具,它能够提供关于连续随机变量的概率分布信息,从而帮助理解和描述各种物理现象和性质。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值