当前位置: 首页 > article >正文

华为OD E卷(100分)47-不等式是否满足约束并输出最大差

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

给定一组不等式,判断是否成立并输出不等式的最大差(输出浮点数的整数部分)

要求:

  1. 不等式系数为 double类型,是一个二维数组

  2. 不等式的变量为 int类型,是一维数组;

  3. 不等式的目标值为 double类型,是一维数组

  4. 不等式约束为字符串数组,只能是:“>”,“>=”,“<”,“<=”,“=”,

例如,不等式组:

a11x1 + a12x2 + a13x3 + a14x4 + a15x5 <= b1; 
a21x1 + a22x2 + a23x3 + a24x4 + a25x5 <= b2; 
a31x1 + a32x2 + a33x3 + a34x4 + a35x5 <= b3; 

最大差 = max{(a11x1+a12x2+a13x3+a14x4+a15x5-b1),(a21x1+a22x2+a23x3+a24x4+ a25x5-b2),(a31x1+a32x2+a33x3+a34x4+a35x5-b3)},

类型为整数(输出浮点数的整数部分)

输入描述

a11,a12,a13,a14,a15,a21,a22,a23,a24,a25, a31,a32,a33,a34,a35,x1,x2,x3,x4,x5,b1,b2,b3,<=,<=,<=

  • 不等式组系数(double类型):

    a11,a12,a13,a14,a15

    a21,a22,a23,a24,a25

    a31,a32,a33,a34,a35

  • 不等式变量(int类型):x1,x2,x3,x4,x5

  • 不等式目标值(double类型):b1,b2,b3

  • 不等式约束(字符串类型):<=,<=,<=

输出描述

true或者 false,最大差

示例1

输入

2.3,3,5.6,7.6;11,3,8.6,25,1;0.3,9,5.3,66,7.8;1,3,2,7,5;340,670,80.6;<=,<=,<=

输出

false 458

示例2

输入

2.36,3,6,7.1,6;1,30,8.6,2.5,21;0.3,69,5.3,6.6,7.8;1,13,2,17,5;340,67,300.6;<=,>=,<=

输出

false 758

题解

Java实现

package huawei.e100;

import java.util.ArrayList;
import java.util.Scanner;

/**
* @author arnold
* @date 2025年1月3日
* 判断一组不等式是否满足约束并输出最大差

*/
public class T47 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String[] tmp = sc.nextLine().split(";");
			int arrayNum = tmp.length -3;
			ArrayList<Double[]> al = new ArrayList<Double[]>();
			for (int i = 0; i < arrayNum; i++) {
				String[] as = tmp[i].split(",");
				Double[] a = new Double[as.length];
				for (int j = 0; j < a.length; j++) {
					a[j] = Double.parseDouble(as[j]);
				}
				al.add(a);
				
			}
			String[] bs = tmp[tmp.length -3].split(",");
			Double[] b = new Double[bs.length];
			for (int j = 0; j < bs.length; j++) {
				b[j] = Double.parseDouble(bs[j]);
			}
			String[] ts = tmp[tmp.length -2].split(",");
			Double[] t = new Double[ts.length];
			for (int j = 0; j < ts.length; j++) {
				t[j] = Double.parseDouble(ts[j]);
			}
			
			String[] op = tmp[tmp.length -1].split(",");
			boolean res = check1(al, b, op, t);
			int res2 =  check2(al, b,  t);
			System.out.print(res + " ");
			System.out.print(res2 );
			System.out.println();
		}

	}
	
	static boolean check1(ArrayList<Double[]> al, Double[] b, String[] op, Double[] t){
		boolean res = true;
		for (int i = 0; i < al.size(); i++) {
			Double[] a = al.get(i);
			Double sum = 0.0;
			for (int j = 0; j < a.length; j++) {
				sum += a[j]*b[j];
			}
			if(op[i].equals(">")) {
				if (sum > t[i] != true) return false;
			} else if(op[i].equals(">=")) {
				if (sum >= t[i] != true) return false;
			} else if(op[i].equals("=")) {
				if (sum == t[i] != true) return false;
			} else if(op[i].equals("<=")) {
				if (sum <= t[i] != true) return false;
			} else if(op[i].equals("<")) {
				if (sum < t[i] != true) return false;
			}
		}
		return res;
	}
	static int check2(ArrayList<Double[]> al, Double[] b, Double[] t){
		int max = Integer.MIN_VALUE;
		for (int i = 0; i < al.size(); i++) {
			Double[] a = al.get(i);
			Double sum = 0.0;
			for (int j = 0; j < a.length; j++) {
				sum += a[j]*b[j];
			}
			max = (int)Math.max(sum-t[i], max);
		}
		return max;
	}
}


http://www.kler.cn/a/468561.html

相关文章:

  • STM32 I2C通信外设
  • 【数电尾灯设计】2022-8-16
  • 容器技术思想 Docker K8S
  • Telephony Netd
  • 指针 const 的组合
  • 实现AVL树
  • JavaWeb开发(四)HttpServletRequest
  • Web前端基础知识(六)
  • 奥迪TT MK1(初代奥迪TT、第一代奥迪TT)仪表盘故障/不精准/水温/剩余油量不准,如何修复、测试、复位?
  • 系统思考—企业辅导
  • 第06章 重定向与管道
  • LabVIEW计算机软件著作权
  • Leetcode打卡:设计一个ATM机器
  • leetcode 2241. 设计一个 ATM 机器 中等
  • 幸运彩票(PTA)C语言
  • Ansys Maxwell:3PH 变压器电感计算
  • 代码段中使用数据、栈
  • leetCode 33:搜索旋转排序数组
  • Android 系统服务DisplayManagerService和DisplayDevice生命周期解读
  • Redis数据库笔记——ZSet的底层实现(跳表)
  • 密码学原理技术-第十四章-Key Management
  • 力扣-20-有效的括号-栈
  • Qt笔记:网络编程Tcp
  • 自闭症儿童康复个案研究:深度解析治疗效果
  • C/C++中new/delete与malloc/free的区别及对象管理
  • Hello 2025