私はleetcodeに問題が発生しました。私はDPを使用した他のソリューションを見ましたが、理解できないものがあります。動的プログラミング - 配列のターゲットの総和を見つける
ある問題:
int findTargetSumWays(vector<int>& nums, int S)
{
int n = nums.size();
vector<int> dp(S+1, 0);
dp[0] = 1;
for(int i=0; i<n; i++)
for(int j=S; j>=nums[i]; j--)
//for(int j=nums[i]; j<=S; j++) //why it is wrong?
{
dp[j] += dp[j-nums[i]];
}
return dp[S];
}
:、その合計等しいS.
を対象とするソリューションがあるこれらの整数の一部を選択する方法を多くの方法を見つけるだけ正の整数を含む非空の配列を考えます
コードでは、2番目のループはSからnums [i]までカウントしますが、なぜnums [i]からSまでカウントできないのですか?私は上向きにカウントすれば、結果は答えよりはるかに大きくなることは知っていますが、上向きにカウントする自然の問題を理解することはできません。
ご了承ください。