7-28 超市贴花 (5 分)
生活随笔
收集整理的這篇文章主要介紹了
7-28 超市贴花 (5 分)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
某家超市有一種促銷手段,購(gòu)買金額超過(guò)一定閾值就隨機(jī)給一個(gè)貼花。貼花有不同種類的,種類以編號(hào)表示,編號(hào)是一個(gè)1到100之間的數(shù)字。當(dāng)收集到連續(xù)編號(hào)的三張貼花時(shí),就可以換一個(gè)小禮物。
小明經(jīng)常去某家超市購(gòu)物,積攢了不少貼花,你幫他看看,能換多少小禮物。
輸入格式:
首先是一個(gè)正整數(shù)N(1<N<100),表示小明手上的貼花的數(shù)量。 然后是N個(gè)正整數(shù)Pi(1<=Pi<=100),每個(gè)數(shù)字表示一張貼花的編號(hào)。
輸出格式:
輸出一個(gè)數(shù)字,表示小明可以換的小禮物的數(shù)量。如果不能換小禮物,就輸出0。
輸入樣例:
6 3 2 4 6 6 4輸出樣例:
1
2 3 4是一個(gè)組合,之后剩下的4 6 6不是連續(xù)的編號(hào)
這里的使用map集合解決,其實(shí)數(shù)組更加方便,但是有點(diǎn)浪費(fèi)內(nèi)存
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用來(lái)標(biāo)記每次讀取三個(gè)的記錄for (Integer integer : set) {if (index==0)first=integer;//first用來(lái)記錄前一個(gè)數(shù)據(jù)else if (index==2)last=integer;//last記錄最后一個(gè)數(shù)據(jù)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用來(lái)記錄最小值,即最多能換幾次}index++;if (index>2)index=0;}System.out.println(count);} }總結(jié)
以上是生活随笔為你收集整理的7-28 超市贴花 (5 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 苹果电脑怎么高质量截屏苹果电脑截屏有几种
- 下一篇: 7-42 学术会议地点统计问题-hebu