OpenJudge-百練-2755
這道題用遞迴寫的話還是很好寫的,我們設遞迴函式的名稱為Ways(w,k) 。
它的含義就是,w的大小,取k個物品,有多少種方式。
我們可以知道遞迴的邊界條件就是當w的大小為0的時候,我們的方法數只有一種,但是當我們要取0個物品的時候,我們的方法數就為0了,因為Ways(40,0),顯然是0。
邊界條件知道以後,我們就可以知道對於物品k來說,我們有兩種策略,一種是選它,一種是不選,我們把總的方案數加起來就可以了。
所以不選的時候,我們就讓k-1,選的時候我們就讓k-1,然後w-a[k]。
程式如下:
#include <iostream> using namespace std; int a[30],N; int Ways(int w,int k) { if (w==0) return 1; if (k<=0) return 0; return Ways(w,k-1)+Ways(w-a[k],k-1); } int main() { cin>>N; for (int i=1;i<=N;i++) { cin>>a[i]; } cout<<Ways(40,N)<<endl; return 0; }
相關推薦
OpenJudge-百練-2755-動規
動態規劃的話,我們中心思想就是,設一個num陣列,num[ i ][ j ] 代表從i的大小中,取出 j 種物品的方法數。 當不取j種物品的時候,我們就讓num[ i ][ j ] =num[ i ][ j -1 ],並且此時,如果,i-a[j]>=0 的話,說明揹包還放得下,所以 我
OpenJudge-百練-2755
這道題用遞迴寫的話還是很好寫的,我們設遞迴函式的名稱為Ways(w,k) 。 它的含義就是,w的大小,取k個物品,有多少種方式。 我們可以知道遞迴的邊界條件就是當w的大小為0的時候,我們的方法數只有一種,但是當我們要取0個物品的時候,我們的方法數就為0了,因為Ways(40,0),顯然是0。
Openjudge-百練-4013-踩方格
這題目是一道深搜的題目,我們寫一個遞迴函式叫Ways(int i, int j ,int n),i j就是當前所處的座標,我們設定一個visited陣列,簡稱 V 。 對於這個陣列,首先初始化為零,然後我們遞迴的邊界條件就是走完輸入的步數的時候,就返回一。 如果沒走完,就對當前的visite
Openjudge 百練 03:複雜的整數劃分問題
03:複雜的整數劃分問題 總時間限制: 200ms 記憶體限制: 65536kB 描述 將正整數n 表示成一系列正整數之和,n=n1+n2+…+nk, 其中n1>=n2>=…&
百練2812:惱人的青蛙
style using gif ret 青春 stream rac ring its 傳送門:http://bailian.openjudge.cn/practice/2812/ 【題解】 垃圾題目毀我青春。 暴力枚舉兩個點,判斷是否成立。 瞎jb判一判,剪剪枝就過了。 大
百練3383:Cell Phone Network
%d ble set 實現 names sca amp register can 傳送門:http://bailian.openjudge.cn/practice/3383/ 【題解】 題目就是最小支配集。 學習了最小支配集的解法: 樹形dp(有空可以推一推) 貪心:DFS
百練2505:A multiplication game
unsigned stdio.h multi ios ica ret reg cti std 傳送門:http://bailian.openjudge.cn/practice/2505/ 【題解】 我們找找規律: 1~9顯然是Stan wins. 10~18是Ollie w
百練6255-單詞反轉-2016正式B題
tle ebo first col span top 時間 title ams 百練 / 2016計算機學科夏令營上機考試 已經結束 題目 排名 狀態 統計 提問 B:單詞翻轉 查看 提交 統計 提問 總時間限制: 1000ms 內存限制
百練3723:圍棋
pen 沒有 輸入 數據 交點 con 表白 char mage 總時間限制: 1000ms 內存限制: 65536kB描述圍棋的棋盤上有19*19條線交織成的361個交點,黑棋和白棋可以下在交點上。我們稱這些交點為“目”。一個目的上下左右四個方向,稱之為“氣”,如果一個目
百練4082:樹的鏡面映射
content front light 利用 內存 create true nod namespace 總時間限制: 1000ms 內存限制: 65536kB描述 一棵樹的鏡面映射指的是對於樹中的每個結點,都將其子結點反序。例如,對左邊的樹,鏡面映射後
百練1248:Safecracker
() als urn 字典序 %d end std puts 多個 題目鏈接:http://bailian.openjudge.cn/practice/1248/ 題目大意: 給定一個正數target(小於12000000)和一串由大寫字母組成的數組(長度為5~12),從數
OpenJudge百煉習題解答(C++)--題4074:積水量
tom size alt popu function 滲透 urn dsm img 題: 總時間限制: 1000ms 內存限制:65536kB 描寫敘述 凹凸不平的地面每當下雨的時候總會積水。如果地面是一維的。每一塊寬度都為1,高度是非負整數。
OpenJudge百煉習題解答(C++)--題4010:2011
輸入 ati and splay blue margin display 推薦 bstr 題: 總時間限制: 1000ms 內存限制: 65536kB 描寫敘述已知長度最大為200位的正整數n。請求出2011^n的後四位。 輸入第一行為一個正整
百練OJ:2804詞典
temp [0 stdin 做的 std int 原來 比較 max 題目是這樣的: 2804:詞典 總時間限制: 3000ms 內存限制: 65536kB描述 你旅遊到了一個國外的城市。那裏的人們說的外國語言你不能理解。不過幸運的是,你有一本詞典可以幫助你。 輸入首先
百練OJ:2797最短前綴
包括 == art 我們 第一個字符 好用 else class 暴力 剛開始找輸入的退出方式死也沒找著,原來這並不是個問題,上網看了一下有人直接這麽寫的 while( scanf( "%s", input[ temp ++]) != EOF );輸入完成後 通過輸入一行C
百練2593:MaxSequence
target ucs dpi href sql info pbm mmc nib n剎未獵lbr牢卮排http://t.docin.com/mwbqv36209 Rq遮寐Y34倚趁嗽3NDhttp://jz.docin.com/ujzvf21356 4蹦啡7棟V灰癰
百練1088 DP+DFS
clu 偉人 學習 mov pri pre 意思 pos freopen 題幹在最後。 這道題本來是一道DP的練習題,的真不好意思的是,盡管那道更復雜的poj1661我最終做出來了,可是花太多時間了!我決定改變學習策略,多看別人的,等有底子了,再自己來! 要知道國外一位偉人
百練2811--熄燈問題
n) ++ printf cpp clas esp blank 數組 light 題目陳述 這道題乍一看不會做,但聽完老師的思路就變得很簡單: 雖然情況很多似乎列舉不完,但是我們可以只列舉第一行的所有情況,然後推出後面的所有情況,這下這道題就有了思路 我自己寫的時候沒有用到
遞歸+DFS--簡單迷宮問題--百練2802
sizeof pair printf c代碼 freopen game 一個 mem getch 題目描述 遞歸函數中為什麽最後有一個 =false? ac代碼: #include<iostream> #include<cstring> #defi
18.06.30 POJ 百練1745:Divisibility
ted 描述 來源 str %d std fir src lap 描述 Consider an arbitrary sequence of integers. One can place + or - operators between integers in the s