一看就可以用母函式做,不過好久沒練dp了,所以還是用dp做了。用dp[i][j]表示前i種石頭排出j個出來的種數,當考慮第i種石頭石,列舉其使用的個數即可。wa了好幾次,是整數相乘精度的問題,使用long long就過了。
/** hdu1004/win.cpp
* created on: 2012-7-24
* author : ben */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int maxn = 105
;const
int maxv =10005
;const
int mod = 1000000007
;int
nums[maxn];
intdp[maxn][maxv];
intc[maxv][maxn];
void
initcombinenum()
c[1][1] = 1
;
for (int i = 2; i < maxv; i++)
c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) %mod;}}
}int
main()
memset(dp,
0, sizeof
(dp));
for(int i = 0; i < n; i++)
for(int j = 0; j <= nums[0]; j++)
for(int i = 1; i < n; i++)
dp[i][j] = temp %mod;}}
ll ans = 0
;
for(int j = 1; j <= v; j++)
printf(
"case %d: %d\n
", ++t, (int)(ans %mod));
}return0;
}
hdu 1716 排列2 排列組合
問題描述 ray又對數字的列產生了興趣 現有四張卡片,用這四張卡片能排列出很多不同的4位數,要求按從小到大的順序輸出這些4位數 input 每組資料佔一行,代表四張卡片上的數字 0 數字 9 如果四張卡片都是0,則輸入結束。output 對每組卡片按從小到大的順序輸出所有能由這四張卡片組成的4位數,...
hdu 2047 排列組合
problem description 今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面...
hdu 1521 排列組合
題意 problem description 有n種物品,並且知道每種物品的數量。要求從中選出m件物品的排列數。例如有兩種物品a,b,並且數量都是1,從中選2件物品,則排列有 ab ba 兩種。input 每組輸入資料有兩行,第一行是二個數n,m 1 m,n 10 表示物品數,第二行有n個數,分別表...