Problem 181 「2色の物体をグループ分けする場合の数の調べ上げ」 †
3つの黒い物 B と1つの白い物 W を持っているとき, これらは7通りにグループ分け出来る.
(BBBW) (B,BBW) (B,B,BW) (B,B,B,W) (B,BB,W) (BBB,W) (BB,BW)
60個の黒い物 B と40個の白い物 W は何通りにグループ分け出来るか?
何も考えない漸化式で5分で解けます。
計算時間1秒。
#include<stdio.h>
#include<string.h>
#include<iostream>
__int64 dp[61][41];
int main(){
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int b=0;b<=60;b++){
for(int w=0;w<=40;w++){
if(b+w==0)continue;
for(int b1=0;b1+b<=60;b1++){
for(int w1=0;w1+w<=40;w1++){
dp[b+b1][w+w1]+=dp[b1][w1];
}
}
}
}
std::cout<<"ans="<<dp[60][40]<<"\n";
}
最終更新:2016年01月19日 08:10