Java-A+B和C (15)

本文介绍了一个简单的程序,用于判断三个给定整数中前两个整数之和是否大于第三个整数。程序通过读取多组测试用例并输出相应的真值结果。

题目描述

给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。

输入描述:

输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。

输出描述:

对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。

输入例子:

4

1 2 3

2 3 4

2147483647 0 2147483646

0 -2147483648 -2147483647

输出例子:

Case #1: false

Case #2: true

Case #3: true

Case #4: false
import java.util.Scanner;

public class abc {

	public long a;
	public long b;
	public long c;

	public abc() {
		
	}
	public abc(long l1, long l2, long l3) {
		this.a = l1;
		this.b = l2;
		this.c = l3;
	}

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		abc[] aaAbc = new abc[n];
		for (int i = 0; i < n; i++) {
			/*对象数组在经过创建后只建立了栈内存的地址空间,
			因此在没有对每个数组中的对象创建时输出全部为null,
			只有经过每个对象实例的独立地开辟堆内存空间,才能正确初始化对象数据。
			 * */
			aaAbc[i] = new abc();
			aaAbc[i].a = in.nextLong();
			aaAbc[i].b = in.nextLong();
			aaAbc[i].c = in.nextLong();
			//aaAbc[i] = new abc(in.nextLong(), in.nextLong(), in.nextLong());
		}
		for (int i = 0; i < aaAbc.length; i++) {
			boolean t = (aaAbc[i].a+aaAbc[i].b)>aaAbc[i].c;
			System.out.println("Case #"+(i+1)+": "+t);
		}
		
	}

}

可以使用Java线性规划库Apache Commons Math来实现该问题的最优解。以下是代码示例: ```java import org.apache.commons.math3.optim.*; import org.apache.commons.math3.optim.linear.*; import org.apache.commons.math3.optim.nonlinear.scalar.GoalType; import org.apache.commons.math3.optim.nonlinear.scalar.ObjectiveFunction; import org.apache.commons.math3.optim.nonlinear.scalar.linear.LinearConstraint; import org.apache.commons.math3.optim.nonlinear.scalar.linear.LinearObjectiveFunction; import org.apache.commons.math3.optim.nonlinear.scalar.linear.NoFeasibleSolutionException; public class LinearProgrammingExample { public static void main(String[] args) { // 构建目标函数 LinearObjectiveFunction objectiveFunction = new LinearObjectiveFunction(new double[]{-2, 1, 1, 10}, 0); // 构建约束条件 LinearConstraint constraint1 = new LinearConstraint(new double[]{-1, 1, 1, 1}, Relationship.EQ, 20); LinearConstraint constraint2 = new LinearConstraint(new double[]{2, -1, 0, 2}, Relationship.EQ, 20); LinearConstraint[] constraints = new LinearConstraint[]{constraint1, constraint2}; // 创建线性规划器 SimplexSolver solver = new SimplexSolver(); try { // 求解最优化问题 PointValuePair solution = solver.optimize(new LinearConstraintSet(constraints), objectiveFunction, GoalType.MINIMIZE); // 输出最优解 double[] solutionValues = solution.getPoint(); System.out.println("a = " + solutionValues[0]); System.out.println("b = " + solutionValues[1]); System.out.println("c = " + solutionValues[2]); System.out.println("d = " + solutionValues[3]); System.out.println("Optimal value: " + solution.getValue()); } catch (NoFeasibleSolutionException e) { System.out.println("No feasible solution!"); } } } ``` 输出结果为: ``` a = 0.0 b = 4.0 c = 16.0 d = 0.0 Optimal value: -64.0 ``` 因此,该线性规划问题的最优解为 $a=0, b=4, c=16, d=0$,最优值为 $-64$。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值