牛客網 《考研複試機試》 神奇的口袋

2021-10-05 03:01:04 字數 851 閱讀 7365

有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2……an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john有多少種不同的選擇物品的方式。

輸入的第一行是正整數n (1 <= n <= 20),表示不同的物品的數目。接下來的n行,每行有乙個1到40之間的正整數,分別給出a1,a2……an的值。

輸出不同的選擇物品的方式的數目。

示例13

2020

20

#include

#include

using

namespace std;

//使用遞迴的方法

int a[

100]

;int n;

intcount

(int i,

int sum)

//sum一開始對應的是口袋體積40,sum=0代表了通過減去物體體積使得口袋剛好裝滿

if(sum<

0||i==n)

//sum<0說明了通過減法無法使條件滿足,而i=n則代表了已經將物品全部裝完但是還是沒有符合條件

return

count

(i+1

,sum-a[i])+

count

(i+1

,sum)

;//通過這個式子獲得所有物品的組合

}int

main()

cout<<

count(0

,40)<}return0;

}

牛客網 《考研複試機試》 字尾子串排序

對於乙個字串,將其字尾子串進行排序,例如grain 其子串有 grain rain ain in n 然後對各子串按字典順序排序,即 ain,grain,in,n,rain 每個案例為一行字串。將子串排序輸出 示例1grain aingraininn rain cin.get cin.getline...

牛客網考研復試題 棋盤遊戲

有乙個6 6的棋盤,每個棋盤上都有乙個數值,現在又乙個起始位置和終止位置,請找出乙個從起始位置到終止位置代價最小的路徑 1 只能沿上下左右四個方向移動 2 總代價是沒走一步的代價之和 3 每步 從a,b到c,d 的代價是c,d上的值與其在a,b上的狀態的乘積 4 初始狀態為1 每走一步,狀態按如下公...

清華大學考研複試機試 今年的第幾天

輸入年 月 日,計算該天是本年的第幾天。包括三個整數年 1 y 3000 月 1 m 12 日 1 d 31 輸入可能有多組測試資料,對於每一組測試資料,輸出乙個整數,代表input中的年 月 日對應本年的第幾天。水題,注意閏年和每個月的天數即可,可以使用乙個全域性陣列來記錄每個月的天數,如果是閏年...