日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码

發布時間:2023/12/2 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】
你有一架天平和 N個砝碼,這N個砝碼重量依次是W1, W2, …, Wn。
請你計算一共可以稱出多少種不同的重量?注意砝碼可以放在天平兩邊。

【輸入格式】
輸入的第一行包含一個整數N。
第二行包含N個整數: W1, W2, W3, … Wn。

【輸出格式】
輸出一個整數代表答案。

【樣例輸入】
3
146

【樣例輸出】
10


解題思路:①有第一個砝碼:x1,則可測出的重量有x1;②有第二個砝碼:x2,則可測出的重量有x1、x1+x2、|x1-x2|、x2(相同的僅算一次);③有第三個砝碼:x3,則可測出的重量有x1、x1+x2、|x1-x2|、x2、x1+x3、|x1-x3|、x1+x2+x3、|x1+x2-x3|…(相同的僅算一次)?;谏鲜龇治?#xff0c;我們需要使用不存儲相同數據的HashSet來存儲結果更為方便,而對于每增加一個砝碼可能產生的情況,我們可以把前一個砝碼產生并存儲的情況拿過來與之進行處理產生更多的情況并存儲。


Java代碼:

import java.util.HashSet; import java.util.Iterator; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();//使用HashSet對能夠稱出的重量進行存儲,因為HashSet不能存儲相同值正是我們需要的。HashSet<Integer> weightCase = new HashSet<>();//將第一個砝碼值直接存進去int first = scanner.nextInt();weightCase.add(first);//從第二個砝碼開始while (n > 1){int x = scanner.nextInt();//借助一個臨時HashSet存儲該砝碼加入時與前面的砝碼配合可能產生的情況HashSet<Integer> temp = new HashSet<>();//遍歷weightCaseIterator<Integer> iterator = weightCase.iterator();while (iterator.hasNext()){int t = iterator.next();temp.add(t + x);temp.add(Math.abs(t - x));}//將添加該砝碼之后可得的重量情況存儲進去weightCase.addAll(temp);weightCase.add(x);n--;}//除去重量為0這種情況weightCase.remove(0);System.out.println(weightCase.size());} } import java.util.HashSet; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);HashSet<Integer> set = new HashSet<>();int n = scanner.nextInt();set.add(scanner.nextInt());for (int i = 1; i < n; i++) {int fama = scanner.nextInt();HashSet<Integer> temp = new HashSet<>();for (Integer item : set) {temp.add(item + fama);temp.add(Math.abs(item - fama));}temp.add(fama);set.addAll(temp);}set.remove(0);System.out.println(set.size());} }

總結

以上是生活随笔為你收集整理的第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。