計算機保研複試刷題 神奇的口袋

2021-08-27 04:04:30 字數 1076 閱讀 2179

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

輸入描述:

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

輸出描述:

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

示例1

輸入 3

20 20

20 輸出

3解法一

本題採用遞迴思想:

①物品n個,物品體積逐一放入a[100]中

②遞迴函式count(i,sum)=count(i+1,sum-a[i])+count(i+1,sum);

其中,i為第i個物品,sum代表剩餘空缺體積數

count(i+1,sum-a[i]) 代表從第i+1個物品開始,剩餘體積數為sum-a[i]的方案數

(隱含:已經將a[i]的體積計算進去,即包含a[i]的體積)

count(i+1,sum) 代表從第i+1個物品開始,剩餘體積數為sum的方案數

(隱含:不將a[i]的體積計算進去,即不包含a[i]的體積)

**如下:

#include

int a[100];

int n=1;

intcount(int i,int

sum)

int main()

return0;}

解法二#include

using

namespace

std;

#define n 100

int n,a[n];

int main()

dp[0][0]=1;

for(int i=1;i<=n;i++)

for(int j=1;j<=40;j++)

cout

<40]}

return0;}

計算機保研複試刷題 放蘋果

問題描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入 第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。輸出 對輸入的每組資料m和n,用一行輸出相應的k。問...

計算機專業保研複試面試 大體流程介紹

在你大三下學期的時候,四月份到六月中旬是你投遞夏令營和聯絡老師的最佳時期,提早打探相關訊息,聯絡相關導師,製作乙份好的簡歷是很重要的,當然作為計算機學院的學生,有個自己的個人 還是比較拉風的 如果非常不幸的,你在夏令營中沒有被錄取,或者是像我一樣作死,臨時決定保研的,不要著急,你還有一次不報銷的夏令...

跨專業保研計算機

目前本科在讀,大三,某地質大學偏地質和地理的專業,大一的時候由於種種原因放棄了轉專業。目前對本專業漸漸失望,於是從去年10月份以來搜尋了很多關於跨專業保研的帖子。這裡進行乙個簡單的整理,方便自己看也方便其他有同樣想法的小夥伴們看。來自帖子 主要有中科院軟體所 南大計算機 浙大軟院 北大軟微 中科大軟...