0
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 に変換したいと考えています。それとも、これが私ができる唯一の方法ですか?

4

2 に答える 2

0

理論的には、再帰メソッドを反復メソッドに変換できます。したがって、はい、このコードも可能です。

詳細については、このスレッドにあります: https://stackoverflow.com/questions/931762/can-every-recursion-be-converted-into-iteration

于 2013-08-02T14:54:29.270 に答える