大题---砝码称重(贪心算法)

2023-11-11

 


5个砝码

用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。
本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
用户输入:
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1

要求程序输出的组合总是大数在前小数在后。
可以假设用户的输入的数字符合范围1~121。

 

/*
 * 砝码称重
 */
import java.util.Scanner;
public class Main 
{

	public static void main(String[] args) 
	{
     Scanner in=new Scanner(System.in);	
     int n=in.nextInt();
     cal(n);
	}

	public static void cal(int n) 
	{
		int []arr=new int[] {1,3,9,27,81};
		int []num=new int[] {1,4,13,40,121};
		
		int mark=0;
		int i;
		do
		{
		for(i=0;i<num.length;i++)//推出n最接近的num[i]数组的值,用贪心算法求得最优解
		{
			if(n<=num[i])
			{
				break;
			}
		}
		
		if(mark==0)//三种符号分别代表三种不同的状态
		{
			n-=arr[i];
			System.out.print(arr[i]);//第一个肯定为+,特殊处理
		}
		
		if(mark==1)
		{
			n-=arr[i];
			System.out.print("+"+arr[i]);
		}
		
		if(mark==-1)
		{
			n=-n+arr[i];
			System.out.print("-"+arr[i]);
		}

		if(n>0)
		{
			mark=1;
		}
		else if(n<0)
		{
			//得到之后想要负数
			n=-n;//大小取原先数的绝对值
			mark=-1;//标记符号,想要 -mark=-1;
		}
		}
		while(n>0);
	}

}



 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大题---砝码称重(贪心算法) 的相关文章

随机推荐

  • 【机器学习项目实战】Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐

    说明 这是一个机器学习实战项目 附带数据 代码 文档 代码讲解 如需数据 代码 文档 代码讲解可以直接到文章最后获取 1 项目背景 电子商务网站数量迅速上升 将电子商务网站浏览者变为实际消费者 满足消费者需求 通过不同形式提升消费者忠诚度是
  • 兼容性测试方案

    目的 快速覆盖用户的各种操作环境 进行快速验证 1 常规项目测试策略 提高重视度 在需求分析 测试设计 测试执行 收尾阶段都要加大兼容性测试的比重 1 1 需求阶段 在需求阶段要获取兼容性测试环境的来源 来源为产品经理和用户现场使用情况 更
  • java动态规划,求最大子段和,并且求出开始位置,结束位置

    public static void main String args int x 1 3 2 11 8 4 13 5 4 8 5 System out println 最大子段和为 MaxAdd x private static int
  • 基础设计一——FPGA学习笔记<2>

    目录 零 设计流程 一 按键点亮LED灯 1 硬件资源 2 项目设计 3 波形设计 4 创建Vivado工程 编辑 lt 1 gt 添加设计文件 lt 2 gt 添加仿真文件 5 引脚约束 6 生成比特流文件 7 下载验证 8 程序固化 二
  • for-loop 与 json.Unmarshal 性能分析概要

    原文地址 for loop 与 json Unmarshal 性能分析概要 前言 在项目中 常常会遇到循环交换赋值的数据处理场景 尤其是 RPC 数据交互格式要转为 Protobuf 赋值是无法避免的 一般会有如下几种做法 for for
  • Spring入门概述及基本知识点

    Spring是什么 我们常说的Spring 其实在官网中全称是SpringFrameWork Spring是一个轻量级 非入侵式的Java开发框架 主要用于业务层 和整合其他层 解决了业务层和表现层 持久层的耦合问题 将面向接口编程贯穿整个
  • boost介绍

    boost是一个准标准库 相当于STL的延续和扩充 它的设计理念和STL比较接近 都是利用泛型让复用达到最大化 不过对比STL boost更加实用 STL集中在算法部分 而boost包含了不少工具类 可以完成比较具体的工作 boost主要包
  • CVPR21 - BasicVSR:简单有效的视频超分辨率Baseline

    文章目录 原文信息 初识 相知 组件分析 BasicVSR IconVSR 部分实验 回顾 原文信息 原文链接 初识 相比于图像超分 视频超分 VSR Video Super Resolution 显然是一件更具挑战性的任务 视频超分比图像
  • Two slices reporting being the first in the same frame. 和 Could not find ref with POCXX问题

    hevc 000001716438fc00 Two slices reporting being the first in the same frame hevc 000001716439ec80 Could not find ref wi
  • 黑马并发编程(AQS源码分析、线程池)

    AQS源码分析 线程池 8 线程池 1 自定义线程池 阻塞队列 优化队列 线程池 执行和线程处理设计 线程池执行的整个思路 阻塞添加 拒绝策略 2 ThreadExecutor 线程池状态 线程池参数 拒绝策略 newFixedThread
  • 本地上传文件到Linux服务器

    问题描述 如何将本地文件上传至Linux服务器上 这里分别以Windows和Ubuntu系统为例 解决方法 scp filename username IP home directory 举个例子 scp data zip zhangsan
  • 打造利器Qt Creator:代码todo工具的使用

    打造利器Qt Creator 代码todo工具的使用 前言 俗话说 工欲善其事必先利其器 工作生活中 能有一款出色易用 高效简便的工具 对提高效率 达成价值有着莫大的影响 Qt是一套C 库 封装了许多好用的模块和功能 且带有先进的GUI设计
  • 【VUE】vue报错“‘vue-cli-service‘不是内部或外部命令,也不是...”的解决办法

    问题描述 项目执行npm run serve后报错 产生原因 最大概率原因 由于在该代码中含有node module依赖包 再拷贝到其他计算机时 项目路径发生变化 导致找不到vue cli service于是报错 其他出错情况 见下文扩展
  • 如何更好的利用区块链API

    区块链允许数据提供者和消费者直接在单个开放系统中交易信息 而不是订阅世界各地的数十个集中服务 并编写他们的软件来与每个API进行通信 阅读此区块链API教程 了解如何根据你的特定需求使用它 API 应用程序编程接口 是单个计算机程序可以用来
  • synchronized和ReentrantLock的比较

    六 synchronized和ReentrantLock的比较 1 区别 1 Lock是一个接口 而synchronized是Java中的关键字 synchronized是内置的语言实现 2 synchronized在发生异常时 会自动释放
  • IDEA 的 maven项目 Plugins以及Dependencies 爆红 红波浪线

    IntelliJ idea新建Maven项目 Plugins以及Dependencies下有红色波浪线 如图 一 配置maven的Local repository 点击File gt Settings gt Build Execution
  • 使用stream下载文件避坑-》堆内存溢出的原因

    场景 下载80MB的文zip文件正常 大文件就下载不下来 下载为0KB 原因 下载大文件耗时间 设置了超时时间 其实文件没有下载下来 conn setConnectTimeout 3 1000 并不是上面那个原因 这段代码表示通过 Http
  • 基于LSTM的交通工具轨迹预测

    网络上利用LSTM预测轨迹的文章不多 仅有的几篇比较粗略 本文对一些大佬开源的代码进行修改 增添了轨迹连续预测代码 不足之处欢迎批评 本文参考Muzi Water大佬的文章 LSTM模型 轨迹经纬度预测 https blog csdn ne
  • 2022 年十大 Python Web 开发框架

    1 Django Django 框架是任何 Web 开发公司的首选 开发人员使用此框架来开发高质量标准的复杂 Web 和移动应用程序 由于其开源特性 Django 具有成本效益 但在其他有助于开发人员创建 API 和业务类 Web 应用程序
  • 大题---砝码称重(贪心算法)

    5个砝码 用天平称重时 我们希望用尽可能少的砝码组合称出尽可能多的重量 如果只有5个砝码 重量分别是1 3 9 27 81 则它们可以组合称出1到121之间任意整数重量 砝码允许放在左右两个盘中 本题目要求编程实现 对用户给定的重量 给出砝