我給數n
和X不同的號碼獲得N,我應該找出如果我可以使用+
和-
。什麼算法得到給定數字n
我應該使用?例如,
。算法,看看我是否可以從給定的數字
Input Output n=10 . 15+25-30=10 15 25 30
我給數n
和X不同的號碼獲得N,我應該找出如果我可以使用+
和-
。什麼算法得到給定數字n
我應該使用?例如,
。算法,看看我是否可以從給定的數字
Input Output n=10 . 15+25-30=10 15 25 30
你可以動態地做到這一點。迭代給定的數字並存儲這些值,這些值可以通過取前一個結果並添加/減去當前數字來實現。在您的例子這將是:
最後,只要檢查你的值是否在最後一組。它看起來像指數算法(每個迭代的設置大小加倍),儘管數字很快重複。另外,您實際上只能存儲正值。
根據問題陳述,他可能無法刪除負值(可能接受10-15 + 30表格的解決方案,他們不應該這樣做) – gdelab
您也可以加快它的速度一些情況(並非全部)通過預先計算總和S [i]從結尾到任何給定的索引i。在@ kmichael08算法的第i次迭代中,當你在S [i]之下或者在-S [i]之下時,你可以從你的可能列表中刪除這個數字。 – gdelab
@gdelab我想過不重複值,該集合在每一步都是對稱的,所以你可以在更新時記住它,而不是實際保留這些值。如果你可以計算x,那麼也可以-x(否定一切)。 – kmichael08
你的數據集有多大?如果太大,您可能不得不使用啓發式方法來保證成功,只有很好的概率... – gdelab
您嘗試過什麼?這不是免費的編碼服務。你如何手動執行此操作?你可能想從一個小案子開始,然後建立一個數量不同的數字輸入。 – Zac