用子集法,選or不選變成了正or負,BFS執行所有情況,判斷恰好為目標和。
靈神:
設所有數的和為s,取正的和為p,則和為p-(s-p);
有t = p-(s-p) = 2p-s,即p = (s+t)/2;這里的s和t都是固定值;
這樣把問題轉換為了選or不選。
動態規劃方程:
dfs(i, c):前i個數中恰好和為c的方案數;
選第i個,前i-1個和c-nums[i];
不選第i個,前i-1個和為c;
dfs(i, c) = dfs(i-1, c) + dfs(i-1, c-nums[i]));
暫時沒看出來哪錯了,,,