有乙個神奇的口袋,總的容積是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月份以來搜尋了很多關於跨專業保研的帖子。這裡進行乙個簡單的整理,方便自己看也方便其他有同樣想法的小夥伴們看。來自帖子 主要有中科院軟體所 南大計算機 浙大軟院 北大軟微 中科大軟...