double R(int N, int x[206], int i, int c){
if (memo[i][c] != 0) return memo[i][c];
if (i==N){
if (c>=23) return 1;
else return 0;
}
double s;
s = R(N,x,i+1,c+x[i]);
s += R(N,x,i+1,c-x[i]);
memo[i][c] = s;
return s;
}
現在、これは再帰的なメモ化された関数ですが、可能であればこれを反復的な同等の DP に変換したいと考えています。それとも、これが私ができる唯一の方法ですか?