演算法筆記_215:第六屆藍橋杯軟體類校賽部分真題(Java語言B組)

來源:互聯網
上載者:User

標籤:stat   引號   處理   net   integer   獨立性   2.0   origin   任務   

目錄

1 題目一

2 題目二

3 題目三

 

 

   前言:以下代碼僅供參考,若有錯誤歡迎指正哦~

1 題目一
java中提供了對Regex的支援。有的時候,恰當地使用正則,可以讓我們的工作事半功倍!如下代碼用來檢驗一個四則運算式中資料項目的數目,請填寫劃線部分缺少的代碼。注意:只填寫缺少代碼,不要寫任何多餘內容,例如,已有的雙引號。public class A{    public static int f(String s)    {        return s.split("________________").length;    }        public static void main(String[] args)    {        System.out.println(f("12+35*5-2*18/9-3")); //7        System.out.println(f("354*12+3-14/7*6")); //6    }}答案:[^0-9]

 

 

 

 

 

2 題目二
1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數。它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。但是,它發散的很慢:前1項和達到 1.0前4項和才超過 2.0前83項的和才超過 5.0那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?請填寫這個整數。注意:只需要填寫一個整數,不要填寫任何多餘的內容。比如解說文字。答案:1835421

 

 1 public class Main { 2      3     public static void main(String[] args) { 4         double result = 0; 5         for(int i = 1;i < 10000000;i++) { 6             result = result + 1.0 / i; 7             if(result >= 15.0) { 8                 System.out.println(i); 9                 System.out.println("result = "+result);10                 break;11             }12         }13     }14     15 }

 

 

 

 

 

3 題目三
G將軍有一支訓練有素的軍隊,這個軍隊除開G將軍外,每名士兵都有一個直接上級(可能是其他士兵,也可能是G將軍)。現在G將軍將接受一個特別的任務,需要派遣一部分士兵(至少一個)組成一個敢死隊,為了增加敢死隊隊員的獨立性,要求如果一名士兵在敢死隊中,他的直接上級不能在敢死隊中。請問,G將軍有多少種派出敢死隊的方法。注意,G將軍也可以作為一個士兵進入敢死隊。輸入格式輸入的第一行包含一個整數n,表示包括G將軍在內的軍隊的人數。軍隊計程車兵從1至n編號,G將軍編號為1。接下來n-1個數,分別表示編號為2, 3, ..., n計程車兵的直接上級編號,編號i計程車兵的直接上級的編號小於i。輸出格式輸出一個整數,表示派出敢死隊的方案數。由於數目可能很大,你只需要輸出這個數除10007的餘數即可。範例輸入131 1範例輸出14範例說明這四種方式分別是:1. 選1;2. 選2;3. 選3;4. 選2, 3。範例輸入271 1 2 2 3 3範例輸出240資料規模與約定對於20%的資料,n ≤ 20;對於40%的資料,n ≤ 100;對於100%的資料,1 ≤ n ≤ 100000。資源約定:峰值記憶體消耗(含虛擬機器) < 256MCPU消耗  < 2000ms請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。所有代碼放在同一個源檔案中,調試通過後,拷貝提交該源碼。注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。注意:主類的名字必須是:Main,否則按無效代碼處理。

參考資料: 藍橋杯 - G將軍(樹)

 

 1 import java.util.ArrayList; 2 import java.util.Scanner; 3  4 public class Main { 5     public static int n; 6     public static int MOD = 10007; 7     public static ArrayList<Integer>[] list; 8     public static long[][] dp; 9     10     public void dfs(int root) {11         dp[root][0] = 1;12         dp[root][1] = 1;13         for(int i = 0;i < list[root].size();i++) {14             int child = list[root].get(i);15             dfs(child);16             dp[root][0] = dp[root][0] * (dp[child][0] + dp[child][1]) % MOD;17             dp[root][1] = dp[root][1] * dp[child][0] % MOD;18         }19     }20     21     @SuppressWarnings("unchecked")22     public static void main(String[] args) {23         Main test = new Main();24         Scanner in = new Scanner(System.in);25         n = in.nextInt();26         list = new ArrayList[n + 1];27         for(int i = 1;i <= n;i++)28             list[i] = new ArrayList<Integer>();29         for(int i = 2;i <= n;i++) {30             int father = in.nextInt();31             list[father].add(i);32         }33         dp = new long[n + 1][2];34         test.dfs(1);35         long result = (dp[1][0] + dp[1][1] - 1) % MOD;36         System.out.println(result);37     }38 }

 

演算法筆記_215:第六屆藍橋杯軟體類校賽部分真題(Java語言B組)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.