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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯第七届省赛JAVA真题----剪邮票

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯第七届省赛JAVA真题----剪邮票 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剪郵票

如【圖1.jpg】, 有12張連在一起的12生肖的郵票。
現在你要從中剪下5張來,要求必須是連著的。
(僅僅連接一個角不算相連)
比如,【圖2.jpg】,【圖3.jpg】中,粉紅色所示部分就是合格的剪取。

請你計算,一共有多少種不同的剪取方法。

請填寫表示方案數目的整數。
注意:你提交的應該是一個整數,不要填寫任何多余的內容或說明性文字。


解析:這個題很迷,不是很懂,但是代碼是沒問題的,基本思路就是從1-12里面回溯選出5個數,然后再檢驗5個數是否可以連通。選出5個數來當然不難,暴力循環可以,當然回溯也可以,這里采用暴力,藍橋杯的題目能用暴力解的很多。而檢測連通性,需要建立一個vis[]數組來判斷,定住一個數,如果到其他各點能夠連通則執行遞歸繼續判斷,當全部可連通時,vis[]數組全為true,總數+1。而如果這個點不是4或者8的時候,就每次+1遞歸;如果出現4和8,則每次+4遞歸。這是因為4和8是不能繼續走到5和9的。最終結果為116。

public class Main {static int a[] = new int[5]; public static void main(String[] args) { int count = 0; for (a[0] = 0; a[0] < 12; a[0]++) { for (a[1] = a[0] + 1; a[1] < 12; a[1]++) { for (a[2] = a[1] +1 ; a[2] < 12; a[2]++) { for (a[3] = a[2]+1; a[3] < 12; a[3]++) { for (a[4] = a[3]+1; a[4] < 12; a[4]++) { if (judge()) { count++; } } } } } } System.out.println(count); } // 檢測連通性private static boolean judge() { boolean visit[] = new boolean[5]; dfs(visit,0); return visit[0]&&visit[1]&&visit[2]&&visit[3]&&visit[4]; } // dfsprivate static void dfs(boolean[] visit, int i) { visit[i] = true; for (int j = 0; j < visit.length; j++) { // 不是4和8的時候 if (!visit[j] && (a[i]/4==a[j]/4) && (a[i]==a[j]+1 || a[i]==a[j]-1)) { dfs(visit, j); } // 是4和8的時候if (!visit[j] && (a[i] == a[j]+4 || a[i]==a[j]-4)) { dfs(visit, j); } } } } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的蓝桥杯第七届省赛JAVA真题----剪邮票的全部內容,希望文章能夠幫你解決所遇到的問題。

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