poj 1775 01揹包(子集和)

2021-06-28 12:57:38 字數 414 閱讀 8476

題意:給定乙個數n(n<=1000000),判斷這個數能否表示為若干個不相等的數的階乘之和。比如9=1!+2!+3!。

思路:方法一:因為n較小,所以先求出<=1000000的階乘,也就10個左右,然後採用子集和,判斷哪些數能夠由這些階乘組成。記錄即可。

方法二:乙個逆天的性質:因為1!+2!+3!<4!,這情況的成立,所以如果這個數能夠表示成為多個數的階乘,那麼我們可以轉換為這個數減去他能減掉的最大的階乘的數是否能被表示。(

#include #include #define n 1000000

int dp[n+5],f[30],n;

int getfac()

void init()

int main()

return 0;

}

leetcode 分割等和子集(01揹包)

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出 fals...

等和的分隔子集(01揹包)

這兩個子集合中元素分別的和是相等的。對於n 3,我們只有一種劃分方法,而對於n 7時,我們將有4種劃分的方案。輸入包括一行,僅乙個整數,表示n的值 1 n 39 輸出包括一行,僅乙個整數,曉萌可以劃分對應n的集合的方案的個數。當沒發劃分時,輸出0。7 樣例輸出4 計蒜客上面的一道題。主要就是兩個fo...

POJ 3260 完全揹包和多重揹包

題意 農夫約翰要購買 為t的物品,他有n種硬幣,每種硬幣的面額為vi,數量為ci,同時店主也只有這幾種面額的硬幣,但數量無限,問約翰總共要經手的硬幣數量 約翰買東西給店主的硬幣數量 店主找錢給約翰的硬幣數量 約翰經手的硬幣數量 約翰是多重揹包,店主是完全揹包 思路 我們用約翰所擁有的硬幣總額來做揹包...