種樹(normal)
time limit:1000ms memory limit:65536k
total submit:213 accepted:114
description
在6*6的方格地盤中,種植24顆樹,使每行、每列都有4顆樹。
求出所有可能的種植方案總數。
種植方案的說明:輸出乙個6*6的矩陣,種樹的方格用「*」表示,沒種樹的用「.」表示。
如下是一種方案((樣例僅說明格式,並不代表結果)
****..
..****
**..**
..****
****..
**..**
input
output
乙個數即總數
sample input
sample output
//以下表示其中的10種,不需要輸出,輸出總數即可case 1:
****..
****..
**..**
**..**
..****
..****
case 2:
****..
****..
**..**
*.*.**
.*.***
..****
case 3:
****..
****..
**..**
*.*.**
..****
.*.***
case 4:
****..
****..
**..**
*..***
.**.**
..****
case 5:
****..
****..
**..**
*..***
..****
.**.**
case 6:
****..
****..
**..**
.**.**
*..***
..****
case 7:
****..
****..
**..**
.**.**
..****
*..***
case 8:
****..
****..
**..**
.*.***
*.*.**
..****
case 9:
****..
****..
**..**
.*.***
..****
*.*.**
case 10:
****..
****..
**..**
..****
**..**
..****
source
elba
#include
#include
using namespace std;
int s,l[7];
void trees(int x,int k1,int k2)
l[k1]++;
l[k2]++;//該列空格的數量加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<
題解:
本題有兩種解法,第一種是乙個乙個格仔決定種還是不種,可是這樣時間會比較久,所以我就想到了用八皇后的做法,
for (int i=1;i<=5;i++)
for (int j=i+1;j<=6;j++)
trees(x+1,i,j);
首先一行的樹要4顆,這樣迴圈會比較麻煩,那麼就可以迴圈空位的地方,x表示行數,i和j表示空位的位置。
然後用變數l表示該列有多少個空位,最多2個。然後當列數到了6行之後就可以退出累加了。
python練習題目
三色球問題 有紅 黃 藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在乙個盒子中,從中任意摸出 8 個球,程式設計計算摸出球的各種顏色搭配。print red tyellow tblue for red inrange 0,4 for yellow in ra...
Hive練習題目
hive 基本操作 1 資料自己造 a表 id int,name string b表 id int,job id int,num int c表 job id int,job string 建表語句 載入資料 a表和b表進行鏈結操作,並觀察結果 內連線 左連線 left join 小表在前,大表在後 ...
練習題目2
1 將陣列a中的內容和陣列b中的內容進行交換 陣列一樣大 思路 新建乙個陣列作為中間陣列進行交換.如下 2 計算1 1 1 2 1 3 1 4 1 5 1 99 1 100的值.思路 通過每一輪迴圈給分子乘以 1來控制加數的正負號,計算出和.如下 3 編寫程式數一下1到199的所有整數 現過多少次數...