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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝桥杯java第八届第二题--纸牌三角形

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯java第八届第二题--纸牌三角形 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
標題:紙牌三角形A,2,3,4,5,6,7,8,9 共9張紙牌排成一個正三角形(A按1計算)。要求每個邊的和相等。下圖就是一種排法(如有對齊問題,參看p1.png)。A9 64 83 7 5 2這樣的排法可能會有很多。如果考慮旋轉、鏡像后相同的算同一種,一共有多少種不同的排法呢?請你計算并提交該數字。注意:需要提交的是一個整數,不要提交任何多余內容。

解析:
看上去這個題目可以用搜索的方式全部的搜索,剛開始我想用全排列全部排列一下看看能不能解決,后來發現并不是很好解決,但是如果用遞歸的話也是可以的,其實最簡單的就是用循環了,畢竟是一個填空題,對于時間沒有要求,重要的是能把答案算出來。
當時比賽的時候想了很久怎么來判斷重復的情況,就是旋轉和鏡像后相同的情況,后來自己摸索出來了一種方法,在用循環解決的時候可以用,我首先考慮每個數都用數組來裝A[9],每個位置的一個,然后判斷重復就是將A[0],A[3],A[6]這三個數不同即可,所以在循環的時候,A[3]在A[0]的基礎上加一進行循環,A[6]在A[3]的基礎上加一進行循環,這樣就把這兩種重復的情況排除了。

方法一:

static int[] first = new int[9]; static int[] s = new int[9]; static int sum = 0; public static void main(String[] args) { sousuo(0); System.out.println(sum/6); } public static void sousuo(int code){ if(code==9){ if(s[0]+s[1]+s[3]+s[5]==s[0]+s[2]+s[4]+s[8]&&s[0]+s[1]+s[3]+s[5]==s[5]+s[6]+s[7]+s[8]) sum++; return; } for (int i = 0; i < 9; i++) { if(first [i]==0){ first [i] = 1; s[code] = i+1; sousuo(code+1); first [i] = 0; } } }

答案:144

還有方法2的話,后面再寫,如果有什么問題,歡迎指正。。

總結

以上是生活随笔為你收集整理的蓝桥杯java第八届第二题--纸牌三角形的全部內容,希望文章能夠幫你解決所遇到的問題。

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