PTA 实验五 JAVA语言 7
最新推荐文章于 2024-12-10 08:13:46 发布

大葫芦臂围40狂敲代码 于 2024-09-30 12:47:56 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
7-2 超市贴花
分数 20
全屏浏览
切换布局
作者 翁恺
单位 浙江大学
某超市有一种促销手段,购买金额超过一定阈值就随机给一个贴花。贴花有不同种类的,种类以编号表示,编号是一个1到100之间的数字。当收集到连续编号的三张贴花时,就可以换一个小礼物。
小明经常去某超市购物,积攒了不少贴花,你帮他看看,能换多少小礼物。
输入格式:首先是一个正整数N(1<N<100),表示小明手上的贴花的数量。
然后是N个正整数Pi(1⩽Pi⩽1000,每个数字表示一张贴花的编号。
输出一个数字,表示小明可以换的小礼物的数量。如果不能换小礼物,就输出0。
输入样例:6
3 2 4 6 6 4
输出样例:1
2 3 4是一个组合,之后剩下的4 6 6不是连续的编号
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
import java.util.Scanner;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] stickers = new int[n];
for (int i = 0; i < n; i++) {
stickers[i] = scanner.nextInt();
}
int giftCount = countGifts(stickers);
System.out.println(giftCount);
}
public static int countGifts(int[] stickers) {
HashMap<Integer, Integer> stickerCount = new HashMap<>();
int giftCount = 0;
for (int sticker : stickers) {
stickerCount.put(sticker, stickerCount.getOrDefault(sticker, 0) + 1);
if (stickerCount.containsKey(sticker - 2) && stickerCount.containsKey(sticker - 1) &&
stickerCount.containsKey(sticker)) {
int minCount = Math.min(stickerCount.get(sticker - 2),
Math.min(stickerCount.get(sticker - 1), stickerCount.get(sticker)));
giftCount += minCount;
stickerCount.put(sticker - 2, stickerCount.get(sticker - 2) - minCount);
stickerCount.put(sticker - 1, stickerCount.get(sticker - 1) - minCount);
stickerCount.put(sticker, stickerCount.get(sticker) - minCount);
}
}
return giftCount;
}
}
相关知识
Java语言基础知识
《JAVA语言程序设计》期末考试试题及答案
java计算机毕业设计短视频的推荐平台(开题+程序+论文)
Java毕业设计
Java的代码书写规范
Java Swing玫瑰花代码 vbs玫瑰花表白代码
Java实战项目
java画玫瑰花
基于Java毕业设计新型冠状病毒防控咨询网站2020源码+系统+mysql+lw文档+部署软件
java计算机毕业设计公司员工管理系统(开题+程序+论文)
原文链接: PTA 实验五 JAVA语言 7 https://www.huajiangbk.com/newsview1100169.html
| 上一篇: 花260块买门票才能进,这家超市... | 下一篇: 红旗超市最新商品买一送一 |





