題目1(整數拆分)
將乙個正整數n分解成幾個正整數相加,可以有多種分解方法,
例如7=6+1,7=5+2,7=5+1+1,...程式設計求出正整數n的所有整數分解式子。
輸入格式:
每個輸入包含乙個測試用例,即正整數n (0**1:(n如果過百就可能超時)
#include "stdio.h"
int n,sum,ans;
int a[100];
void dfs(int step,int x)
return;
} else if(sum>n)
return;
for(i=x;i<=n;i++)//每次放的數都必須》=上一次的數
return;
}int main()
return 0;
}
題目2:(相對題目1增添了條件)
將整數n分成k份,且每份不能為空,問有多少種不同的分法。
當n=7,k=3時,下面三種分法被認為是相同的:
(1,1,5),(1,5,1),(5,1,1)
輸入描述:
一行兩個數n,m。(6<=n<=200,2<=m<=6)
輸出描述:
一行乙個整數,即不同的分法數。
當然如果用動態規劃來寫,更節約時間
/*
將整數n分成k份,相當於我手上有著許多張(1-n)的牌
我需要取任意三張牌分別放到三個盒子裡面,且需要避免重複
*/#includeint a[10];//用來放置拆分後的數字
int n,m,ans,sum;
void dfs(int step,int x)
int i;
for(i=x;i<=(n-sum)/(m-step+1);i++)//牌按著從小到大排序,這樣可有效的避免重複
return ;
}int main()
題目3:(相對題目2又增添了條件)
把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,
問共有多少種不同的分法?(用k表示)
5,1,1和1,5,1 是同一種分法。
input
第一行是測試資料的數目t(0 <= t <= 20)。
以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。
output
對輸入的每組資料m和n,用一行輸出相應的k。
sample input
17 3
sample output
8
**3(n也不能太大):(可以用的動態規劃來寫,省時)
蘋果數是乙個整數,拆分放到盤子裡面
相當於整數拆分,只是這裡可以有空盤子
#includeint a[10];//用來放置拆分後的數字
int n,m,ans,sum;
void dfs(int step,int x)
if(step==m+1)//沒有(m+1)個盤子,因此不可能放蘋果
return;
int i; //這裡必須是n,因為沒有辦法判定會放到多少個盤子裡
for(i=x;i<=n;i++)//牌按著從小到大排序,這樣可有效的避免重複
return ;
}int main()
return 0;
}
題目4:(放牌,相比全排列難了一些)
題目描述
小明被劫持到x賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裡突然冒出乙個問題:
如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序
自己手裡能拿到的初始牌型組合一共有多少種呢?
輸出請輸出該整數,不要輸出任何多餘的內容或說明文字。
**4:
/*
分析:方法1:深搜
題上說了,不考慮花色,那麼題意就變為:13種牌,每種牌各有4張一樣的
題上又說,不考慮取牌的順序,那麼我們就沒有必要一張一張的取牌了,
我們可以一次拿多 張,也不可以不拿,可以多拿幾次,也可以少拿幾次
這裡為了我們取牌方便,我們把同一種類的放在一塊,那麼就變成了13堆,
當我們站在不同的堆面前,我們可以拿0或1或2或3或4張,然後繼續去下一堆拿牌
當我們恰好拿夠13張時,我們就可以ans+1了,之後返回,
然後再把我們最後一次拿的牌放回去,看看是否可以繼續選擇別的種類的牌,
這樣的話,其實就是深搜返回的過程了
方法2:暴力
還可以13層for迴圈(i=0;i<=4;i++)
滿足條件i+j+k+l+m+l+n+o+p+q+r+s+t==13
*/#includeint ans;
void dfs(int step,int sum)
dfs(step+1,sum);//去下一堆
sum-=i;//把i張牌再放回去,選擇再去拿i+1張牌
} return;
}int main()
放蘋果(盤子不一樣)
view submit statistics clarify 總time limit 1000ms memory limit 65535kb description 把m個同樣的蘋果放在n個不同樣的盤子裡,允許有的盤子空著不放,問共有多少種放法?5,1,1和1,5,1是不同的放法。比如輸入2 2,那...
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...
我們不一樣
前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...