7-28 超市贴花 (5 分)
生活随笔
收集整理的這篇文章主要介紹了
7-28 超市贴花 (5 分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
某家超市有一種促銷手段,購買金額超過一定閾值就隨機給一個貼花。貼花有不同種類的,種類以編號表示,編號是一個1到100之間的數字。當收集到連續編號的三張貼花時,就可以換一個小禮物。
小明經常去某家超市購物,積攢了不少貼花,你幫他看看,能換多少小禮物。
輸入格式:
首先是一個正整數N(1<N<100),表示小明手上的貼花的數量。 然后是N個正整數Pi(1<=Pi<=100),每個數字表示一張貼花的編號。
輸出格式:
輸出一個數字,表示小明可以換的小禮物的數量。如果不能換小禮物,就輸出0。
輸入樣例:
6 3 2 4 6 6 4輸出樣例:
1
2 3 4是一個組合,之后剩下的4 6 6不是連續的編號
這里的使用map集合解決,其實數組更加方便,但是有點浪費內存
import java.util.*;public class Main {public static void main(String[] args){Scanner sc=new Scanner(System.in);int n= sc.nextInt(),count=0;TreeMap<Integer,Integer> tm=new TreeMap<>();for (int i = 0; i < n; i++) {int a= sc.nextInt();if (tm.get(a)!=null)tm.put(a,tm.get(a)+1);else tm.put(a,1);}Set<Integer> set = tm.keySet();int index=0,temp=0,first=0,last=0;//index用來標記每次讀取三個的記錄for (Integer integer : set) {if (index==0)first=integer;//first用來記錄前一個數據else if (index==2)last=integer;//last記錄最后一個數據else temp=integer;if (temp-first==1&&last-temp==1){int min=Math.min(tm.get(temp),tm.get(first));min=Math.min(min,tm.get(last));count+=min;//min用來記錄最小值,即最多能換幾次}index++;if (index>2)index=0;}System.out.println(count);} }總結
以上是生活随笔為你收集整理的7-28 超市贴花 (5 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑怎么高质量截屏苹果电脑截屏有几种
- 下一篇: 《仙境传说RO:新启航》附魔等级及升级介