【AOJ 1335】Equal Sum Sets
問題
Equal Sum Sets | Aizu Online Judge
ソースコード
#include <iostream> #include <cstring> using namespace std; int dp[160][100][160]; int n, k, s; int solve(int _n, int _k, int _s){ int res=0; if(dp[_n][_k][_s] >= 0) return dp[_n][_k][_s]; if(_k == k){ if(_s==s) return 1; } if(_n > n || _k > k || _s > s) return 0; res += solve(_n+1, _k+1, _s+_n); res += solve(_n+1, _k, _s); return dp[_n][_k][_s] = res; } int main(){ while(cin >> n >> k >> s, n){ memset(dp, -1, sizeof(dp)); cout << solve(1,0,0) << endl; } }