CCF CSP 打酱油 java 201709_1 100分

本文探讨了CCFCSP竞赛中的一道经典算法题目:如何用有限的资金买到最多的酱油。通过分析不同购买策略,采用贪心算法实现了最优解,详细介绍了算法思路与Java实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CCF CSP 打酱油 java 201709_1 100分

问题描述
  小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。
输入格式
  输入的第一行包含一个整数N,表示小明可用于买酱油的钱数。N是10的整数倍,N不超过300。
输出格式
  输出一个整数,表示小明最多可以得到多少瓶酱油。
样例输入
  40
样例输出
  5
样例说明
  把40元分成30元和10元,分别买3瓶和1瓶,其中3瓶送1瓶,共得到5瓶。
样例输入
  80
样例输出
  11
样例说明
  把80元分成30元和50元,分别买3瓶和5瓶,其中3瓶送1瓶,5瓶送2瓶,共得到11瓶。
问题分析
  这道题虽然很简单,但思想却很重要。贪心算法是一种很经典的算法。有兴趣的可以了解下。就这道题来说,肯定是先5瓶5瓶的买,然后3瓶3瓶的买,剩下的1瓶1瓶的买。这样买的酱油肯定是最多的。
Java代码如下

import java.util.Scanner;
public class csp201709_1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int number = input.nextInt();
		int count1 = number / 50;
		number = number % 50;
		int count2 = number / 30;
		number = number % 30;
		int count3 = number / 10;
		int result = 7 * count1 + 4 * count2 + count3;
		System.out.println(result);
	}

}

ok!大功告成了,如果你有其他的方法或者问题,欢迎在评论区交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值