亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在多個遞歸調用期間捕獲所有遞歸調用的輸出

在多個遞歸調用期間捕獲所有遞歸調用的輸出

心有法竹 2022-09-13 15:22:18
class Solution:    # @param A : list of integers    # @return a list of list of integers    def check(self,arr,l,i):        for j in range(l,i):            if arr[j]==arr[i]:                return 0        return 1    def calc(self,arr,l,r,temp):        if l>=r:            #return arr            self.result.append(temp)            print(temp)        #print(arr)        for i in range(l,r):            if self.check(arr,l,i):                arr[l],arr[i]=arr[i],arr[l]                temp=arr                self.calc(arr,l+1,r,temp)                arr[l],arr[i]=arr[i],arr[l]    def permute(self, A):        self.result=[]        temp=[]        self.calc(A,0,len(A),temp)        print(self.result)輸入: [ 1, 2, 3 ]輸出:[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 2, 1][3, 1, 2][[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]上面的代碼是基于這個問題從 極客forgeeks(https://www.geeksforgeeks.org/distinct-permutations-string-set-2/) .我試圖為特定的語義存儲所有可能的不同排列,如1,2,3。我無法在 self.result 中捕獲遞歸調用的輸出([1,2,3] 當我嘗試這樣做時重復)變量,但我能夠正確打印它。有人可以幫助如何將其存儲在self.result變量中嗎?
查看完整描述

1 回答

?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

這是因為在每個遞歸級別,您都在修改相同的列表。當您同時執行這兩項操作并引用同一列表對象時。相反,您需要通過 復制列表以捕獲當前狀態(并且不受遞歸中所做的更改的影響)。tmp = arrtmparrtmp = arr.copy()



查看完整回答
反對 回復 2022-09-13
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號