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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSL-练习题目:种树 题解

發(fā)布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSL-练习题目:种树 题解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

種樹(normal)

Time Limit:1000MS? Memory Limit:65536K
Total Submit:213 Accepted:114

Description

  在6*6的方格地盤中,種植24顆樹,使每行、每列都有4顆樹。
  求出所有可能的種植方案總數(shù)。
  種植方案的說明:輸出一個6*6的矩陣,種樹的方格用“*”表示,沒種樹的用“.”表示。
  如下是一種方案((樣例僅說明格式,并不代表結(jié)果)
****..
..****
**..**
..****
****..
**..**
 

Input

Output

一個數(shù)即總數(shù)

Sample Input

Sample Output

//以下表示其中的10種,不需要輸出,輸出總數(shù)即可 Case 1: ****.. ****.. **..** **..** ..**** ..**** Case 2: ****.. ****.. **..** *.*.** .*.*** ..**** Case 3: ****.. ****.. **..** *.*.** ..**** .*.*** Case 4: ****.. ****.. **..** *..*** .**.** ..**** Case 5: ****.. ****.. **..** *..*** ..**** .**.** Case 6: ****.. ****.. **..** .**.** *..*** ..**** Case 7: ****.. ****.. **..** .**.** ..**** *..*** Case 8: ****.. ****.. **..** .*.*** *.*.** ..**** Case 9: ****.. ****.. **..** .*.*** ..**** *.*.** Case 10: ****.. ****.. **..** ..**** **..** ..****

Source

elba

#include#includeusing namespace std; int s,l[7]; void trees(int x,int k1,int k2) { if (l[k1]>1 || l[k2]>1) return;//判斷該列還可不可以插入空格 if (x==6)//退出條件 { s++; return; } l[k1]++; l[k2]++;//該列空格的數(shù)量加1 for (int i=1;i<=5;i++)for (int j=i+1;j<=6;j++)trees(x+1,i,j); l[k1]--; l[k2]--;//回溯 } int main() { for (int i=1;i<=5;i++)for (int j=i+1;j<=6;j++)trees(1,i,j); cout<<s; }

題解:

本題有兩種解法,第一種是一個一個格子決定種還是不種,可是這樣時間會比較久,所以我就想到了用八皇后的做法,

for (int i=1;i<=5;i++)
??for (int j=i+1;j<=6;j++)
?? ?trees(x+1,i,j);

首先一行的樹要4顆,這樣循環(huán)會比較麻煩,那么就可以循環(huán)空位的地方,x表示行數(shù),i和j表示空位的位置。然后用變量L表示該列有多少個空位,最多2個。然后當(dāng)列數(shù)到了6行之后就可以退出累加了。

總結(jié)

以上是生活随笔為你收集整理的SSL-练习题目:种树 题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。