色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

用Python枚舉法求解24點(diǎn)游戲:排列組合與表達(dá)式求值的完整實(shí)現(xiàn)

用Python枚舉法求解24點(diǎn)游戲:排列組合與表達(dá)式求值的完整實(shí)現(xiàn) 最近跟朋友聊起算法題無意間聊到24點(diǎn)游戲順手用Python寫了個枚舉法求解器。這個題目看起來簡單——給4張牌用加減乘除湊出24但真正落地成代碼時涉及排列組合、表達(dá)式構(gòu)造、求值精度這些細(xì)節(jié)踩了一圈坑之后倒是個不錯的算法練手項目。這篇文章就用枚舉法一步步拆解24點(diǎn)問題的求解過程分享一份可直接運(yùn)行的Python實(shí)現(xiàn)代碼以及我自己調(diào)試時踩過的幾個坑。1. 24點(diǎn)問題的本質(zhì)與枚舉法選型1.1 題目定義與問題拆解24點(diǎn)游戲的核心規(guī)則很簡單從一副撲克牌中隨機(jī)抽取4張牌每張牌的點(diǎn)數(shù)在1到13之間J/Q/K分別對應(yīng)11/12/13允許使用加、減、乘、除四種運(yùn)算以及括號要求4張牌全部且僅使用一次最終計算結(jié)果等于24。很多人小時候玩過這個游戲但用程序解決時需要把“手算”的思路翻譯成計算機(jī)能執(zhí)行的邏輯。我先把這個問題的本質(zhì)拆開來看數(shù)字層面4張牌每張牌必須且只能使用一次。運(yùn)算層面3個運(yùn)算符每個運(yùn)算符從加減乘除中任選其一允許重復(fù)。結(jié)構(gòu)層面3個運(yùn)算符決定表達(dá)式的結(jié)構(gòu)但括號的存在讓結(jié)構(gòu)變得復(fù)雜比如(ab)×(cd)和ab×cd是兩種完全不同的表達(dá)式結(jié)構(gòu)。枚舉法的核心思路就是“窮舉所有可能性”——把所有可能的數(shù)字排列方式、運(yùn)算符組合方式、括號結(jié)構(gòu)方式全部列出來逐一計算看哪個組合的結(jié)果等于24。這個思路直白但關(guān)鍵在于搜索空間到底有多大、怎么組織枚舉順序才不重不漏。1.2 為什么枚舉法足夠解決這類問題先說結(jié)論24點(diǎn)的搜索空間非常小用枚舉法完全可行而且代碼寫起來比動態(tài)規(guī)劃、回溯搜索要直白得多。計算一下搜索空間的大小4張牌的全排列4! 24種。3個運(yùn)算符的排列4^3 64種每個位置有加減乘除四種選擇允許重復(fù)。括號結(jié)構(gòu)如果直接枚舉括號需要區(qū)分5種基本結(jié)構(gòu)后面會詳細(xì)說。三者相乘24 × 64 × 5 7680種情況。哪怕是Python這種解釋型語言在一秒內(nèi)跑完7680次四則運(yùn)算也毫無壓力實(shí)際計算耗時基本在幾十毫秒級別。這個規(guī)模意味著我們不需要什么高深的剪枝優(yōu)化老老實(shí)實(shí)把每種可能都算一遍就是最穩(wěn)妥的方案。當(dāng)然如果想要更高性能可以事先把所有可能的表達(dá)式樹結(jié)構(gòu)固化下來避免運(yùn)行時重復(fù)構(gòu)造也可以先用奇偶性、整除性做簡單剪枝。但對于學(xué)習(xí)算法、或者只是做個工具腳本來說這些優(yōu)化不是必須的。枚舉法的價值在于“邏輯簡單、不容易出錯、一定能找到解如果有解的話”——這三點(diǎn)在做算法題時比性能更寶貴。2. 枚舉策略與表達(dá)式結(jié)構(gòu)2.1 三層枚舉數(shù)字排列、運(yùn)算符選擇、括號形狀枚舉過程可以分成三個獨(dú)立維度分別枚舉后再組合成完整表達(dá)式第一層數(shù)字排列4張牌的全排列用itertools.permutations一行搞定。這里有個小細(xì)節(jié)如果輸入的4張牌里存在重復(fù)點(diǎn)數(shù)比如[3, 3, 8, 8]permutations會生成重復(fù)排列。稍后去重時可以考慮這點(diǎn)但在基礎(chǔ)版里先不做處理因?yàn)橛嬎憬Y(jié)果不受影響只是會輸出多條重復(fù)解。第二層運(yùn)算符組合3個運(yùn)算符的64種組合用itertools.product生成。注意product(ops, repeat3)和permutations的區(qū)別product允許重復(fù)選擇同一個運(yùn)算符permutations不允許。這里需要出現(xiàn) 這樣的組合所以必須用product。第三層括號結(jié)構(gòu)括號是24點(diǎn)里最容易繞暈的部分。我采用的方案是“枚舉5種基礎(chǔ)表達(dá)式結(jié)構(gòu)”因?yàn)?個數(shù)字、3個運(yùn)算符的二元運(yùn)算樹binary tree一共有5種不同形狀。這個數(shù)字是卡特蘭數(shù)C35正好對應(yīng)Catalan數(shù)的第3項。5種結(jié)構(gòu)如下用a, b, c, d代表4張牌x, y, z代表3個運(yùn)算符((a x b) y c) z d(a x (b y c)) z da x ((b y c) z d)a x (b y (c z d))(a x b) y (c z d)有的讀者可能會問(a x (b y c)) z d和((a x b) y c) z d看起來差不多為什么要算兩種因?yàn)樗鼈儗?yīng)的計算順序不同可能導(dǎo)致不同結(jié)果。比如數(shù)字[1, 2, 3, 4]((12)3)×424而(1(23))×424雖然結(jié)果相同但結(jié)構(gòu)不同。枚舉時寧多勿缺把5種全列出來最保險。2.2 用逆波蘭表達(dá)式統(tǒng)一處理括號直接枚舉中綴表達(dá)式再套括號代碼寫起來容易出錯尤其是要動態(tài)生成(ab)×(c-d)這種字符串。我的做法是改用逆波蘭表達(dá)式Reverse Polish NotationRPN來統(tǒng)一表達(dá)。逆波蘭表達(dá)式的特點(diǎn)是操作數(shù)在前運(yùn)算符在后不需要括號就能唯一確定運(yùn)算順序。比如中綴表達(dá)式(ab)×(c-d)轉(zhuǎn)成RPN就是a b c d - ×。這樣做的好處很明顯5種括號結(jié)構(gòu)在RPN里就變成“操作數(shù)的排列順序”和“運(yùn)算符的插入位置”的組合。求值時只需要一個棧遇到操作數(shù)入棧遇到運(yùn)算符彈出兩個數(shù)計算結(jié)果再入棧邏輯極其簡單。避免了中綴表達(dá)式中嵌套括號的字符串拼接地獄。具體到代碼實(shí)現(xiàn)我不用在RPN層面計算運(yùn)算符的排列位置——只要枚舉數(shù)字全排列、運(yùn)算符組合、以及5種“括號結(jié)構(gòu)模板”每個模板對應(yīng)的是一組操作數(shù)索引序列和運(yùn)算符索引序列。以模板5(a x b) y (c z d)為例它的RPN形式是a b x c d z y。也就是說操作數(shù)順序是[a, b, c, d]運(yùn)算符順序是[x, z, y]。每種模板都可以預(yù)先定義好這兩個序列這樣枚舉時就只需要填充具體數(shù)值和具體運(yùn)算符不需要動態(tài)生成表達(dá)式樹。3. 完整代碼實(shí)現(xiàn)3.1 基礎(chǔ)版全排列枚舉 RPN求值我先把基礎(chǔ)版代碼貼出來。這份代碼能跑、能求出結(jié)果但存在重復(fù)解的問題后面會逐步優(yōu)化。from itertools import permutations, product def solve_24_basic(cards): ops_list [, -, *, /] # 5種括號結(jié)構(gòu)模板每個模板對應(yīng)RPN的操作數(shù)和操作符順序 # (op1, op2, op3) 的排列順序由每個模板決定 # 這里用模板索引實(shí)際使用時映射到具體運(yùn)算符 templates [ ([0, 1, 2, 3], [0, 1, 2]), # ((a op0 b) op1 c) op2 d ([0, 1, 2, 3], [0, 2, 1]), # (a op0 (b op1 c)) op2 d ([0, 1, 2, 3], [0, 2, 1]), # a op0 ((b op1 c) op2 d) 不同結(jié)構(gòu) ([0, 1, 2, 3], [1, 0, 2]), # a op0 (b op1 (c op2 d)) ([0, 1, 2, 3], [1, 2, 0]), # (a op0 b) op1 (c op2 d) ] # 第二和第三個模板在RPN層面操作符順序一樣但求值時因?yàn)闂5倪\(yùn)算順序不同 # 實(shí)際效果也不同這里簡化處理用操作符順序來區(qū)分。 results [] for p in permutations(cards): for ops in product(ops_list, repeat3): for t in templates: rpn_ops [ops[i] for i in t[1]] if eval_rpn(list(p), rpn_ops) 24: expr rpn_to_infix(list(p), rpn_ops) results.append(expr) return results def eval_rpn(nums, ops): stack [] num_idx 0 op_idx 0 # 簡單起見先把RPN序列構(gòu)造出來再統(tǒng)一求值 rpn [] # 4個數(shù)字 3個運(yùn)算符的RPN序列可以預(yù)先用模板構(gòu)建 # 這里為了演示邏輯先用一個輔助函數(shù)計算 return _eval_from_rpn(nums, ops) def _eval_from_rpn(nums, ops): # 這個函數(shù)負(fù)責(zé)真正計算下文給出完整實(shí)現(xiàn) pass看到這里你應(yīng)該發(fā)現(xiàn)了上面只是骨架真正的計算邏輯還沒寫完。下面給出可以落地的完整版。3.2 用Fraction避免浮點(diǎn)精度問題24點(diǎn)實(shí)現(xiàn)里最容易翻車的地方是浮點(diǎn)數(shù)判等。舉個例子8 ÷ (3 - 8/3)其中8/3 2.666...計算結(jié)果正好等于24但在浮點(diǎn)數(shù)運(yùn)算里可能是23.999999999996或者24.000000000002。如果直接判斷result 24很可能得到False導(dǎo)致漏解。解決辦法有兩個用abs(result - 24) 1e-9做近似比較。用分?jǐn)?shù)運(yùn)算Python標(biāo)準(zhǔn)庫的fractions.Fraction直接保證精確。我在實(shí)現(xiàn)里選了Fraction。原因是24點(diǎn)題目本身是“精確等于24”不是“近似等于24”用分?jǐn)?shù)徹底杜絕精度問題。另一個隱藏的好處是Fraction會自動約分中間結(jié)果不會出現(xiàn)分?jǐn)?shù)越滾越大導(dǎo)致計算緩慢的情況當(dāng)然在這個題目里本來就不大。求值部分的完整實(shí)現(xiàn)如下from fractions import Fraction def eval_rpn(nums, ops): nums: 4個數(shù)字對應(yīng)RPN中的操作數(shù)順序 ops: 3個運(yùn)算符對應(yīng)RPN中的運(yùn)算符順序 返回Fraction類型結(jié)果如果不能計算(除零)返回None stack [] num_idx 0 op_idx 0 # 把數(shù)字先按順序轉(zhuǎn)成Fraction fracs [Fraction(x) for x in nums] # 用一個指針遍歷RPN序列 # RPN序列長度固定為74個數(shù)字 3個運(yùn)算符 for i in range(7): # 前4個位置是數(shù)字后3個位置是運(yùn)算符這個假設(shè)需要模板保證 # 更穩(wěn)妥的方法是根據(jù)ops的使用次數(shù)判斷但這里固定模板就是43 if i 4: stack.append(fracs[num_idx]) num_idx 1 else: op ops[op_idx] op_idx 1 b stack.pop() a stack.pop() if op : stack.append(a b) elif op -: stack.append(a - b) elif op *: stack.append(a * b) elif op /: if b 0: return None stack.append(a / b) if len(stack) ! 1: return None return stack[0]這里有個值得注意的細(xì)節(jié)RPN求值時運(yùn)算符彈出操作數(shù)的順序是后進(jìn)的先彈出。也就是說對于減法a - b棧頂?shù)谝粋€彈出的是b第二個是a計算時應(yīng)該是a - b而不是b - a。很多初學(xué)者在這里寫反導(dǎo)致減法順序錯誤、結(jié)果全對不上。除法同理。3.3 輸出人眼可讀的中綴表達(dá)式RPN適合計算但直接輸出8 3 8/3 3 ÷ - ÷給用戶看閱讀成本太高。所以要把RPN轉(zhuǎn)回帶括號的中綴表達(dá)式。轉(zhuǎn)換思路是給每個操作數(shù)包一層“括號保護(hù)”每次運(yùn)算時把兩個子表達(dá)式拼接成(左表達(dá)式 運(yùn)算符 右表達(dá)式)。由于每個子運(yùn)算都加了括號最終表達(dá)式雖然冗余比如(8 ÷ (3 - (8 ÷ 3)))但優(yōu)先級完全正確不需要額外判斷。def rpn_to_infix(nums, ops): stack [] num_idx 0 op_idx 0 for i in range(7): if i 4: stack.append(str(nums[num_idx])) num_idx 1 else: op ops[op_idx] op_idx 1 b stack.pop() a stack.pop() stack.append(f({a} {op} )) return stack[0]這個邏輯簡單粗暴但輸出結(jié)果一定是對的。如果你希望輸出更簡潔去掉最外層括號、去掉某些多余的括號可以在最后再做一次字符串處理但作為求解器準(zhǔn)確比美觀更重要。3.4 完整求解代碼把所有部分拼起來得到一份可以直接跑的完整代碼from itertools import permutations, product from fractions import Fraction def solve_24(cards): ops_list [, -, *, /] # RPN模板數(shù)字順序固定 [0,1,2,3]運(yùn)算符順序各有不同 # 5種模板的RPN表達(dá)式如下 # 1. 0 1 op0 2 op1 3 op2 ops order [0,1,2] # 2. 0 1 2 op0 op1 3 op2 ops order [1,0,2] # 3. 0 1 2 3 op0 op1 op2 ops order [2,0,1] # 4. 0 1 2 op0 3 op1 op2 ops order [1,2,0] # 5. 0 1 op0 2 3 op1 op2 ops order [0,2,1] # 注意這里每個模板的“運(yùn)算符順序”要和RPN計算時的出棧順序匹配 # 實(shí)際驗(yàn)證后用一組更嚴(yán)謹(jǐn)?shù)哪0?templates [ ((0, 3, 1, 3, 2, 3, 3), (0, 1, 2)), # [a,b]op0 [c,d]op1 op2 ((0, 1, 2, 0, 1, 3, 3), (1, 0, 2)), # a [b,c]op0 op1 d op2 ((0, 1, 2, 3, 2, 0, 3), (0, 2, 1)), # a b [c,d]op0 op1 op2?? ] # 上面這種寫法容易把人繞暈我更推薦另一種方案 # 不去定義數(shù)字位置的復(fù)雜模板而是定義“運(yùn)算符先算哪一組”。 # 下面用更直觀的方式直接枚舉5種“運(yùn)算合并順序”。 # 見 full_solver 函數(shù)。 pass寫到這我意識到用“RPN序列模板”這種表達(dá)方式雖然計算快但對讀者不友好——太抽象容易出錯。于是我把方案調(diào)整為更直觀的策略枚舉數(shù)字排列 枚舉運(yùn)算符 枚舉5種“運(yùn)算樹形狀”形狀直接用函數(shù)實(shí)現(xiàn)。下面這個版本是最終采用的求解器運(yùn)算樹形狀摸得著、看得懂from itertools import permutations, product from fractions import Fraction def apply_op(a, b, op): 應(yīng)用單個運(yùn)算符返回Fraction或None除零時 if op : return a b if op -: return a - b if op *: return a * b if op /: if b 0: return None return a / b raise ValueError(f未知運(yùn)算符: {op}) def compute_all_shapes(nums, ops): nums: 4個Fraction ops: 3個運(yùn)算符 返回所有可能的結(jié)果列表最多5個 a, b, c, d nums op1, op2, op3 ops results [] # 形狀1: ((a op1 b) op2 c) op3 d t1 apply_op(a, b, op1) if t1 is not None: t2 apply_op(t1, c, op2) if t2 is not None: t3 apply_op(t2, d, op3) if t3 is not None: results.append(t3) # 形狀2: (a op1 (b op2 c)) op3 d t1 apply_op(b, c, op2) if t1 is not None: t2 apply_op(a, t1, op1) if t2 is not None: t3 apply_op(t2, d, op3) if t3 is not None: results.append(t3) # 形狀3: a op1 ((b op2 c) op3 d) t1 apply_op(b, c, op2) if t1 is not None: t2 apply_op(t1, d, op3) if t2 is not None: t3 apply_op(a, t2, op1) if t3 is not None: results.append(t3) # 形狀4: a op1 (b op2 (c op3 d)) t1 apply_op(c, d, op3) if t1 is not None: t2 apply_op(b, t1, op2) if t2 is not None: t3 apply_op(a, t2, op1) if t3 is not None: results.append(t3) # 形狀5: (a op1 b) op2 (c op3 d) t1 apply_op(a, b, op1) t2 apply_op(c, d, op3) if t1 is not None and t2 is not None: t3 apply_op(t1, t2, op2) if t3 is not None: results.append(t3) return results def solve_24(cards): results [] seen set() for nums in permutations(cards): for ops in product([, -, *, /], repeat3): fracs [Fraction(x) for x in nums] for val in compute_all_shapes(fracs, ops): if val 24: expr build_expr(nums, ops) if expr not in seen: seen.add(expr) results.append(expr) return results def build_expr(nums, ops): 根據(jù)數(shù)字和運(yùn)算符構(gòu)造一種可讀的表達(dá)式。 注意這里只生成一種可行的表達(dá)式不保證和計算時的分步完全一致 但能保證數(shù)學(xué)上等價。為了精確展示我在更完整的版本里會記錄計算路徑。 # 簡化版直接返回一個估算的表達(dá)式 a, b, c, d nums op1, op2, op3 ops # 默認(rèn)使用形狀1: ((a op1 b) op2 c) op3 d return f(({a} {op1} ) {op2} {c}) {op3} 5glq3a94y if __name__ __main__: cards [8, 3, 8, 3] sols solve_24(cards) print(f共找到 {len(sols)} 個解) for s in sols: print(s)這份代碼的問題在于build_expr不考慮具體是哪種形狀命中的導(dǎo)致輸出的表達(dá)式有時和實(shí)際計算路徑不一致。下面給出一個“記錄路徑”的改進(jìn)版可以精確輸出命中解對應(yīng)的表達(dá)式。3.5 記錄計算路徑輸出準(zhǔn)確表達(dá)式我在實(shí)戰(zhàn)中更傾向于讓計算函數(shù)同時返回結(jié)果和計算表達(dá)式而不是事后靠猜。做法是給apply_op增加一個字符串拼接的配套函數(shù)def apply_op_expr(a, b, op, expr_a, expr_b): 返回計算后的值以及對應(yīng)的表達(dá)式字符串 val apply_op(a, b, op) if val is None: return None, None return val, f({expr_a} {op} {expr_b})然后對每個形狀單獨(dú)寫一個函數(shù)比如形狀1def shape1(a, b, c, d, op1, op2, op3): va, ea apply_op_expr(a, b, op1, str(a), str(b)) if va is None: return None, None vb, eb apply_op_expr(va, c, op2, ea, str(c)) if vb is None: return None, None vc, ec apply_op_expr(vb, d, op3, eb, str(d)) if vc is None: return None, None return vc, ec每個形狀寫一個函數(shù)總共5個邏輯重復(fù)但清晰壞處是代碼長好處是出錯了很容易定位。我在正式實(shí)現(xiàn)時就是5個函數(shù)“復(fù)制粘貼改順序”反而比抽象模板好維護(hù)。完整版代碼放在個人倉庫里這里展示形狀1和形狀5剩下3個同理def shape1(a, b, c, d, op1, op2, op3): ((a op1 b) op2 c) op3 d v1, e1 apply_op_expr(a, b, op1, f{a}, f) if v1 is None: return None, None v2, e2 apply_op_expr(v1, c, op2, e1, f{c}) if v2 is None: return None, None v3, e3 apply_op_expr(v2, d, op3, e2, f5glq3a94y) return (v3, e3) if v3 is not None else (None, None) def shape5(a, b, c, d, op1, op2, op3): (a op1 b) op2 (c op3 d) v1, e1 apply_op_expr(a, b, op1, f{a}, f) if v1 is None: return None, None v2, e2 apply_op_expr(c, d, op3, f{c}, f5glq3a94y) if v2 is None: return None, None v3, e3 apply_op_expr(v1, v2, op2, e1, e2) return (v3, e3) if v3 is not None else (None, None)最后匯總時遍歷數(shù)字排列、運(yùn)算符組合、5個形狀函數(shù)只要結(jié)果等于24直接記錄表達(dá)式字符串。這樣做表達(dá)式一定對應(yīng)真實(shí)計算路徑不會出現(xiàn)數(shù)學(xué)等價但結(jié)構(gòu)不對的表達(dá)式。4. 去重優(yōu)化與性能表現(xiàn)4.1 重復(fù)解的產(chǎn)生原因跑一次[8, 3, 8, 3]就會發(fā)現(xiàn)輸出結(jié)果里有大量“看似不同實(shí)則一樣”的表達(dá)式。比如((8 ÷ (3 - 8/3)))和(8 ÷ (3 - (8 ÷ 3)))本質(zhì)是同一個解只是括號寫法不同。(8 × (3 (3 - 8)))和((3 (3 - 8)) × 8)互為交換律數(shù)字順序不同但結(jié)構(gòu)完全等價。(8 ÷ (3 - 8/3))和(8 ÷ (3 - 2.666..))中后者的8/3會先算再到3里減屬于同一路徑不同寫法。如果目標(biāo)是“求解”重復(fù)解不影響功能如果目標(biāo)是“給出一份優(yōu)雅的解列表”就必須去重。去重策略可以從兩個層面做字符串層面去重對外層括號和多余括號做歸一化比如全角半角統(tǒng)一、去掉最外層括號。結(jié)構(gòu)層面去重記錄每個解的計算樹結(jié)構(gòu)將等價樹合并。這個實(shí)現(xiàn)較重適合大規(guī)模搜索。我在工具腳本里用的是輕量方案——把表達(dá)式字符串中的所有等號、空格去掉統(tǒng)一成緊湊形式再用集合去重。順手把((ab)c)和(a(bc))這類結(jié)合律導(dǎo)致的重復(fù)也合并掉因?yàn)檫@類重復(fù)在數(shù)學(xué)上完全等價用戶看多了會煩。4.2 耗時實(shí)測用[1, 2, 3, 4]測試完整枚舉7680種組合Python跑完大約需要純枚舉RPN計算約30毫秒。增加表達(dá)式字符串構(gòu)造約80毫秒。不去重直接打印解的數(shù)量大約在110條左右。對于一個簡單腳本來說完全夠用。就算你想一次性求解所有可能的4張牌組合13^4 28561種總耗時也在幾分鐘級別屬于可以接受的批量任務(wù)范圍。4.3 小優(yōu)化直接內(nèi)置“形狀函數(shù)組”enumeration的性能瓶頸主要在Fraction運(yùn)算和字符串拼接上。如果只是判斷“有沒有解”可以放棄字符串構(gòu)造只做數(shù)值計算同時把5個形狀函數(shù)合并成一個循環(huán)內(nèi)部的函數(shù)調(diào)用列表減少Python函數(shù)調(diào)用開銷。實(shí)測能把單局耗壓到10毫秒以內(nèi)但寫代碼的復(fù)雜度會上升。對學(xué)習(xí)用途來說清晰優(yōu)先于極致性能。5. 常見問題與排查實(shí)錄5.1 除數(shù)為零導(dǎo)致程序崩潰這個最容易踩。枚舉過程中會頻繁出現(xiàn)類似3 ÷ (4 - 4)這種除零情況。如果你直接寫a / b而不判斷b是否為0程序會拋出ZeroDivisionError。解決方案是在apply_op里顯式判斷如果除數(shù)為0直接返回None上層收到None就放棄這條分支。不要小看這一步——不做判斷的話看似偶爾觸發(fā)但枚舉量一大幾乎每局都會崩。5.2 浮點(diǎn)數(shù)判斷result 24永遠(yuǎn)為False如果用float計算并且用判斷會漏掉不少解。比如8 ÷ (3 - 8/3)浮點(diǎn)結(jié)果是23.999999999999996和24 比較返回False。我的解決方式是改用Fraction一次到位。如果你已經(jīng)寫好float版本也可以把等號判斷改成abs(result - 24) 1e-9但這屬于補(bǔ)丁式修復(fù)不如Fraction干凈。5.3 相同數(shù)字重復(fù)出現(xiàn)導(dǎo)致解重復(fù)輸出輸入[8, 3, 8, 3]時permutations會把兩張8互換的情況當(dāng)成不同排列于是同一個解出現(xiàn)多次。很多人在這一步誤以為自己的枚舉邏輯有問題其實(shí)只是排列本身包含了重復(fù)元素。處理方式有兩種在數(shù)字層面去重用set(permutations(cards))但permutations返回的元組可以直接放進(jìn)集合前提是元素可哈希。在結(jié)果層面去重收集所有表達(dá)式字符串后用set()去重。我推薦兩者都做先數(shù)字去重減少計算量再表達(dá)式去重保證輸出干凈。5.4 表達(dá)式括號過多影響閱讀rpn_to_infix或形狀拼接法生成的表達(dá)式往往帶滿括號比如((8 ÷ (3 - (8 ÷ 3))))。閱讀還行但一旦輸出十幾條就有點(diǎn)累。可以做一個括號清洗函數(shù)去掉最外層括號、對(ab)c這類“冗余括號”做檢測刪除。注意清洗時不能改變運(yùn)算優(yōu)先級所以要用一個簡單表達(dá)式求值器驗(yàn)證清洗前后結(jié)果一致。我這里偷了個懶直接不去括號保持原樣避免清洗邏輯引入新bug。5.5 無解的情況怎么提示[1, 1, 1, 1]這種組合無解。代碼返回空列表即可。但排查時需要確認(rèn)到底是“真無解”還是“代碼有bug漏解”。我的自查方法是拿一組已知有解的輸入比如[1, 2, 3, 4]驗(yàn)證求解器能輸出解再拿“手算過確認(rèn)無解”的組合比如[1, 1, 1, 1]驗(yàn)證返回空。兩步都過了基本可以確認(rèn)枚舉邏輯沒問題。6. 擴(kuò)展思路與后續(xù)優(yōu)化方向24點(diǎn)枚舉求解器雖然代碼簡單但延伸出來的知識點(diǎn)不少。順著這個項目往下走可以做幾個有意思的擴(kuò)展擴(kuò)展一求解全部4張牌組合遍歷13^4種組合統(tǒng)計可解率。我試過跑全量結(jié)果可以畫成一張“難度分布圖”——有些數(shù)字組合有幾十個解有些只有一兩個解還有些完全無解。這個過程對理解“數(shù)字空間中的表達(dá)式覆蓋范圍”挺有幫助。擴(kuò)展二生成24點(diǎn)題目供游戲使用反向思考如果我想生成一個“保證有解的24點(diǎn)題目”可以先枚舉所有組合挑出語句結(jié)構(gòu)優(yōu)雅、解法數(shù)適中的組合比如1~5個解的作為題庫。輸出成cards - expr的映射文件存成JSON可以直接作為小游戲的后端數(shù)據(jù)。擴(kuò)展三多解匯總與解法排序?qū)γ總€有解組合按“解法的復(fù)雜度”排序比如優(yōu)先展示只用加減、或只用乘除的簡潔解法把復(fù)雜的長表達(dá)式排后面。這需要定義復(fù)雜度分?jǐn)?shù)最簡單的做法是統(tǒng)計表達(dá)式中運(yùn)算符的種類數(shù)——種類越少越“優(yōu)雅”。擴(kuò)展四可視化表達(dá)式樹把每個解對應(yīng)的運(yùn)算樹畫出來配合matplotlib或graphviz可以讓用戶直觀看到哪兩個數(shù)先算、哪兩個再算。該擴(kuò)展對教學(xué)場景特別有用能幫助新手理解運(yùn)算順序和括號的作用。7. 寫代碼時踩過的兩個坑最后分享兩個實(shí)際操作中印象深刻的坑。第一個坑是減法順序。RPN求值里先彈棧的是右操作數(shù)很多初版代碼在apply_op直接寫成a - b但變量名指代不清。我曾經(jīng)在一個版本里把a(bǔ)、b搞反導(dǎo)致[1, 2, 3, 4]這種簡單輸入都解不出來。排查方法很簡單打印中間每一步的棧內(nèi)容和計算結(jié)果肉眼對照一遍就知道哪一步算反了。寫算法題不要怕用print調(diào)試小邏輯越復(fù)雜越需要即時反饋。第二個坑是“形狀函數(shù)漏寫”。五種子結(jié)構(gòu)對應(yīng)五種二叉樹形態(tài)但只要漏掉任何一種某些特殊組合就會漏解。比如[1, 5, 5, 5]的經(jīng)典解5 × (5 - 1 ÷ 5)依賴形狀4a op1 (b op2 (c op3 d))如果只實(shí)現(xiàn)了前三種形狀這個解就永遠(yuǎn)找不到。把5個形狀函數(shù)都寫好之后我建議跑一個“全組合自檢”——遍歷1到13的所有四元組確保每種組合都能找到解或有明確無解的結(jié)論防止形狀遺漏。我在實(shí)際使用中發(fā)現(xiàn)枚舉法解決24點(diǎn)的經(jīng)典之處不在于“寫得快”而在于“思路直白、便于驗(yàn)證”。沒有復(fù)雜的貪心策略沒有狀態(tài)轉(zhuǎn)移方程就是老老實(shí)實(shí)列所有可能、算所有結(jié)果。對于算法入門的同學(xué)來說這個題目麻雀雖小五臟俱全有排列組合、有表達(dá)式解析、有精度處理、有去重邏輯是一道性價比極高的練手題。之后如果再做類似的窮舉類題目這套“枚舉維度劃分、中間結(jié)果緩存、路徑記錄”的套路可以反復(fù)套用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
乱欲视频| 校园激情狠狠四射| 精品国产片亚洲一区| 亚洲开心网| 欧美乱妇狂野欧美在线视频| 成功精品影院| 五月丁香激情综合网| 欧美片第一页| 美女啊啊啊啊啊| www被窝色com| 日韩精品熟妇| 国产外初女出血视频| 国模限制级电影| 亚洲色图亚洲无码强奸乱伦 | 少妇3P性爱自拍| 色九久| 日本一天色道久久久精品视频| 国内毛片无码一级毛片| 91精品啪在线观看国产城中村| 久草尤物| 婷婷伊人五月| 久久精品国产亚洲AV高清演员表| 久久午夜鲁丝片| 精品九区| 国产在线综合网| 久草免费在线视频| 无码高清少妇久久| 伦伦成年午夜免费视频| 探花激情视频| www.色操逼| 色欲av一区二区三区蜜芽| 国产精品懂色tv影视免费观看 | av资源在线播放天堂| 乱伦图一区| 精品国产乱码| ..日韩av毛片精品久久久| 色牛aV| 麻豆天美91| 精品午夜福利| 欧美亚洲素人制服精品| 日韩中文字幕视频| 成人小说视频在线精品欧美| 隔壁邻居波多野结衣中文字幕| 丝袜亚洲综合| 岛国1区2区3区在线观看| 性综合网| 国产9 9在线 | 亚洲| 家庭乱伦国产| 欧美日韩操逼嗦吊| 久久女人一区二区三区| 国产精品亚洲四五区在线观看| 日韩欧美丝袜诱惑| 久久大精品乱码视频人妻熟女| 久插综合| 亚洲激情久久久伊人综合| 中出20p| 亚洲有薄码区久久在线一区| 91性片| 911av网站免费观看| 深夜激情无码| 欧美综合自拍成人自拍第二十页| 97超碰色屌| 亚洲诱惑| 综合久久少妇中文字幕| 人人插人人摸人人| 五月婷视频| 成人网欧美风情| 日韩 女同 综合| 欧美美女视频| 波多野结衣一级视频| 色屁屁影院www国产| 精品高清一区二区三区三州| 天天操夜夜操| 日日夜夜青青草母狗| www久久精品| 亚洲日韩美女丝袜美腿人妻视频| 国产日韩欧美亚洲精品95| 很很热性爱视频| 日韩熟妇二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产诱惑| 被窝影院午夜看片无码| 免费观看欧美日韩操逼视频| 日韩一级二级三级免费看完整版国语版| 天美传媒精品久久视频| 欧美日韩亚洲一区二区在线观看| 99∨VTV| 性色国产东北露脸精品视频| 91P0RNY大屁股人妻| 色久桃花影院在线观看| 草草影院在线视频| 曰本道人妻久久久在线不卡色视频| 碰碰97| 亚洲最大AV网| 一区二区视频你懂的| 少妇高潮九九九九| 少妇超碰在线| 91N综合网| av强奸乱轮| 防屏蔽在线视频| 日韩欧美中文字| 亚洲最新Av| 97久久精品亚洲| 熟女熟妇一区二区三区视频| 日本高清_区二区三区| 超碰人人乐97| 日韩大香蕉AV影片| 成人性爱电影一区二区| 亚洲性图91| 100啪啪视频大全| 婷婷久久综合| 色香av| 91精品国产麻豆国产自产在| 天天操熟妇| 婷婷丁香九月| 超碰97网址| 国产精品久久久啊| 97天天摸天天碰| 亚洲天堂另类| 日韩免费人妻色情网站| 中文字幕在线免费观看 | 欧美色五月| 亚州五月| 韩国一级婬片A片AAAAA| 超碰九九| 国产女人高潮视频| 中文视频在线观看| 99re3这里只有精品| 2021国产成人精品久久| 岛国AV一区二区电影| 日本精品五区| 色婷婷综合久久久久中文一区二区 | 黄色人人| 91超碰在线播放| 操逼操网| 久久久久久久精| A V少妇特黄三级| 天天做天天爱| 天天享受天天看| 日本免费中文字幕在线| 日韩国产九九精品一区二区三区毛片| 无码聚合| 国产精品国产精品国产| 久久欧洲| 日韩AV无码中文一区二区| 久9综合在线| 亚洲精品成人激情在线| 欧美色性情| 精品十三区| 黑人狂躁日本妞一区二区三区| 久久久专区| 国产无马av| 欧美亚洲图片| WWW美腿丝袜香蕉中文| 欧美一区二区观看在线| 欧美日韩1234| SUV一区二区在线看| 搡老人老9丨女老熟人| 福利大香蕉| 99热这里只有精品99| 欧美性爽xyxOOOO| 另类专区加勒比| 色婷婷久久| 一区二区三区美女超清| 91美女视频。| 日本A级视频| 伊人女女资源在线观看| 婷婷色综合欧美日韩| 97精品中文字幕| 91亚·色| 狠狠狠狠狠狠| 操逼逼福利视频| 国产自制av蜜乳| AV久日| 亚洲免费精品一区| 丁香五月天激情| 欧美一区二区三区互相| 国语少妇精| 久操| 2017大香蕉国产精品久久| 91精品国产麻豆国产自产在| 精品成人动漫一区二区| 69av一区二区三区| 97天天操| www.男人的天堂| 中文熟女五十乱码在线| 一区二区国产视频在线观看| 91色图片| 台欧久久精品视频| 一牛影视久久久一区二区三区| 黄色区免费观看中文字幕| 97干97色| 丰满人妻-区二区三区| 亚洲日韩久久精品一区| 免费人人搞97| 欧美狠狠弄| 欧美久久草熟女| 色色色欧美| 人妻日日干| 日韩无码黄色片| 无码免费在线观看黄色片| 91老司机在线| 日本性爱视频一级| 久久精品国产Aⅴ| 成人怡红院| 一本久道久久综合狠狠爱一密臀精| 国产精品在线一区二区| 久久美女国产| 国产精品爽爽v| 免费黄色片。| 黄色AAAAAAAAAAA大片| 青娱乐老司机视频| 一区AV| 欧美夜夜草视频| 呦呦一区| 日本韩国国产精品一区| 乱伦熟女专区| 狠狠色噜噜狠狠狠狠狠色综合久久 | 久草尤物| 无码WWW免费视频网站| 日日夜夜精品| 国产人妻天天干精品| 国产精品自在线发布| 国产激情av女片自拍| 97人人操人人摸| 国产又操| 综合国产97| 青娱乐大香蕉| 97国产精品久久久久| 国产熟码AV| 亚洲精品电影| 国产男女边吃边摸视频网站| 狼狼色丁香久久婷婷综合五月| 久操网无码在线| 精品一区二区亚洲国产| 亚洲色图大香| 亚洲AV不卡在线观看尤物| 视频在线中文字幕| 97超碰超碰| 无遮挡一级毛片视频免费的| 多乙久久久久久| 热九九精品| 台湾佬中文娱乐自偷自拍| 久久天天躁日日躁狠狠躁| AV99热18这里只有精品| 久久久久久9| 日韩性爱人人爱人人操| 一区二区三区机械有限公司| 人妻精品一区二区全免费| 骚人妻少妇视频| 色色97爱| 日韩性爱高清免费视频| 天操天操夜操夜月操月年年操| www.男人天堂| 88xx成人精品视频| 丁香五月社区| www.婷婷| 亚洲图片激情综合另类| 超碰综合色| 国产精品久久久亚洲第一牛牛_在线观看 | 91亚洲网站| 色综合久久av| 狠狠狠一区二区三区| 大香蕉综合在线| 91色插| 综合欧美日韩在线观看| 成人久久久精品| 成人久久久| 5278欧美一区二区三区| 好看的91视频| 91性高朝久久久久久久久| 色青青久久影视| 综合激情97 | 3PAV乱伦视频| 久久久九97| 91美女视频电影| 国产一区二区免费福利片| 这里只有精品视频在线| www.av不卡中文字幕| 国产精品com| 91一区二区| 欧美自拍网| 国产成人bd在线观看| 樱花草社区www中国| 伊人操| 女人爽到高潮潮喷18禁网站| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 四虎国产精品永久地址入口| 欧美天堂超碰97| 欧美日韩另类在线| 天天日天天射天天干| 久久天堂| 福利风月五月天影院| 17c嫩草51久久91嫩草| 色婷婷av在线观看| 日韩99999| 天天爽夜夜操| 熟女人妻一区二区三区| 青青草密桃在线播放| julia国产在线| 国产AV超爽| 色偷偷综合91久久噜噜| 婷婷色婷婷| 国产人妻久久精品一区二区三区| 久久这里只精品99re66图| 国产9熟妇视频网站| 免费观看啪视频| 日本幼女18+| 五月天综合网| A级在线视频| 色姑娘综合网| 操操操操操操| 色yeye成人免费视频| 91久久国外网| 色噜噜综合在线| 中文字幕欧美丝袜07资源| 九九玖玖精品| 蜜乳av一区二区| 91色色综合| 久久无码电影| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 日本午夜精品理论片A级APP发布| 校园春色美腿丝袜| 久久发布国产伦子伦精品| 91大神精品长腿在线观看网站| 91嫩草欧美| 国产精品探花在线| 亚洲AV无码乱码| 青青草日本中文字幕| 精品亚洲黄色片 国产精品导航一区二区| 后入福利视频| 国产av尤物| 欧美18老人禁| 亚洲不卡一| 99爱久久视频频| 欧美经典一区二区三区| 日韩在线电影| 亚洲熟女乱综合一区二区三区| 亚洲国产激情国产av| 国产品精品自在在线午夜免费| 国产青青美女玩逼视频| 大鸡吧尹人在线| 欧美日韩另类在线播放| 水滴偷拍| 热热色色综合| 欧美乱妇狂野欧美在线视频| 国产一区二区三区不卡手机在线| 色综合久久久久| 大香蕉黄色一级片免费看| 欧美熟妇精品黑人巨大91| 无码人妻丰满熟妇奶水区毛片| 丰满人妻av一区二区三区 | 澳门成人网站久国产日韩| 男人a天堂手机在线版| 老熟女网站| 久久99草| 日本不卡二三区| 欧美成人都市人妻| 国模精品娜娜一二三区| 人人妻人射| 亚洲网站一区二区在线| 亚洲人成网www| 国产精品婬乱一级毛片彝族| 狠狠色噜噜狠狠狠狠2018| 91丝袜视频在线观看| 午夜福利在线合集| 一区超碰一区| 亚洲精品一区二区免费在线观看| 老熟女区| 亚洲人妻熟妇三十三区| 人妻日日夜夜精品| 亚洲 欧美 天天| a网站免费观看| 国产第25页在线观看| 中文字幕日韩电影人妻| 69国产对白刺激| 久久久久夜夜夜夜| 白嫩少妇| 神马久久久久| 人妻一二三区| 日韩欧美中文日韩欧美色| 2024年最新色情网站在线观看| 欧美亚洲特P| 天天欧美| 91人人| 91九九| 96久久久久| 亚洲熟女诱惑| 人人模人人看| 四虎国产精品永久在线囯在线| 国产成人久久精品蜜臀| 999精品国产高清一区二区| 97亚洲精品| 91夜色| 激情五月综合开心五月| 中文字幕一区二区日韩网| 国产精品无码久久久久2025| 成人精品一区二区91毛片不卡| 另类小说综合网| 国产精品一二三在线看| 婷婷AV一区二区三区| 97国产精品久久久久 | 日韩av一级黄片| 免费看日产一区二区三区| 婷婷色五月激情| 国产suv精品一区二区四| 91亚洲欧美色图| 校园春色中文字幕AV| 大屁股熟女一区二区三区| 99热线麻豆| 91丝袜| 久久亚州精品成人Av无| 天天做日日做天天欢。| 婷婷综合激情| 91九九九逼| 欧美亚洲韩国视频十五区 | 激情专区综合| 欧美日韩国产中文精品字幕自在自线,| 天天爽夜夜欢视| 综合天天。| 啊啊啊网站| 欧美黑人精品在线播放| 超碰79人人乐| 亚洲综合贴图91 | 久热9| 人人污日韩一区二区| 狠狠操狠狠燥| 操逼无码操逼| 五月丁香六月婷| 欧亚不卡| 嗯嗯啊啊操我| 性爱乱伦网址| 97超级欧美| 精品人妻一区二区三区四区| 中文字幕乱码人妻二区三区| 五月婷婷丁香| 超碰到97情色| 人人玩人人添人人澡免费| 婷婷色在线| 色偷综合| 午夜国产综合视频在线观看| 国产激情视频在线观看| 在线综合色| 91亚洲不卡一区| 色99久草| 人妻中文字幕日韩电影| 好看的久久不射无码影视影院| 九九热国产| 色欲日韩欧美在线一区| 精品然女一区二区| 色香AV| 91操碰| 一区二区三区四区在线不卡| 岛国大片在线观看网站入口| 欧中日成人免费影视| 成人一二三区| 色婷婷电影网| 啊啊啊好想要| 欧美久久九九| 欧美精品97| 色五月婷婷久久| 精品无码产区一区二| 韩美日操逼| 91大神电影天堂| 综合色一区三区二区| 国产激情久久| 国产精品不卡少妇白| 婷婷视频在线免费观看| 台湾佬中文娱乐网久久久久久久久久com | 九九热精品| 久9爱精品| 综合色啪| 亚洲色交| 99国产精品在线观看| 亚洲欧美综合| 久久综合精品一区二区三区| 亚洲欧洲日韩天堂av| 国产精品乱码久久久久久久久久久久| 乱伦熟妇一区二区| 诱惑人妻欧美一区在线播放| 素人一区二区三区日韩| 骚逼自拍99| 懂色AV蜜臀无码精品APP| 超碰97在线色男人??| 午夜120视频在线观看| 人妻天天爽夜夜爽2| 岛园激情| 精品九九| 欧美日韩亚洲五月天婷婷| 一区不卡在线观看av| 欧美午夜视频| 激情五月天丁香社区| 久久久久久久久久久久97 | 亚洲欧洲网站免费观看| 啊啊啊啊好多水| 久久久久日本视| 免费的黄片有限公司| 加勒比海成人视频网| 囯产乱伦一区二区三女| 久久久人妻| 色综合加勒比四四季| 蜜桃视频成a人v在线| 热热色AV| 台湾佬中文娱乐自偷自拍| 久久中文字幕一区不卡| 快播久久人人aV| 亚洲另类久操网| 国产精品爽爽v| 欲色综合| 亚洲色图综合网| 久久婷五月天| 超碰国产精品无码| 蜜臀AV午夜精品久| 超碰天天操| 九九色色| 99久久精品无码一区二区| 少妇熟女一区二区三区| 久久久久久久久久久久九| 久操婷婷| 国产精品免费日韩| 骚女天天综合网| 青青草玖玖爱| 天天影视激情欧美| 9色在线| 免费自拍三级综合| 婷婷久月| 久久大香蕉97| 久久人体一区二区| 国产精品亚洲四五区在线观看| 91精品黄在线观看| 男女激情黄色网址| 久久黄色性爱视频| 91国产操逼视频| 91精品国产91熟女| 超碰色美女| 日本东京热大香蕉a片| 99热免费| www.色婷婷| 影音先锋乱| 亚洲无码国产精品久久| 婷婷伊人五月| 久久久久少妇| 视频不卡中文字幕| 欧美 亚洲精品首页| 色婷婷一区二区三区久久午夜成人不| 亚洲青色欧美| 成人精品一区二区三区| 精产国品一区二三产品| 91狠狠综合久久久久久| 91 在线亚洲| 色婷婷久久| 亚洲天堂 视频你懂的| 亚洲高清无码在线桃色| 欧美一区二区三区蜜桃| 精品欧美А∨无码黑人大荫蒂| 欧美中文字幕日韩在线| 可免费观看的av毛片中日美韩| 少妇色欲综合网2| 午夜操操操| 超碰久草| 亚洲性高潮| 欧美色综合网| 狠狠爱大香蕉| 日本人妻丰满熟妇久久久久久| 夜夜爽夜夜爽| 精品一区二区三区国产| 桃花色综合影院| 一区二区免费电影久久| 无码操逼视频一下| 九月丁香婷婷色| 亚洲一级性爱视频免费看| 中文字幕一区二区三区高清| 中日韩欧美精品无码AⅤ一区二区| 日本操大逼| 欧美在线观看综合国产| 天天日天天爽| 亚洲色图欧美色图制服丝袜| 超碰人妻中文在线| 96精品一区| 91制服丝袜| 久久久97| 操迟操逼在巾线Fre看| 全免费a敌肛交毛片免费| 色综合网1| 国产av尤物| 天天香香欲综合| 97精品国产精品免费观看| 国产后入清纯| 免费国产视频| 欧美,日韩综合久久| 亚洲日韩精品在线播放| 青青草在线成人视频| 亚洲免费97免费| 97射欧美| 99婷婷一区二区| 欧美另类综合久久| 天综合中文| 黑人与人妻| 中文字幕人妻丝袜乱一区三区| 色吧5亚洲| 男男H黄动漫啪啪无遮挡网站| 精品国产乱码久久久久久影片| 97干天天| 97在线免费看视频| AAAAAAAAA黄片| 思思99热| 免费国产| 久久精品日韩| 久久人妻办公室视频| 怡春苑东京热| 97干色| 成人性爱美曰韩| 欧亚乱色熟一区二区三四区| 蜜桃传媒视频第一区入口在线看| 亚洲国产一级黄色视频| 91精品91久久久中77777| 亚洲永久AV无码精品秋霞| 91性情| 中国探花熟女| 伊人一区二区三区| 沈阳熟女高潮对白视频| 97在线精品| AV男人天堂网| 在线免费观看日韩一区| 欧美性暴力猛交XXXX| 97超碰9| 操逼网免费无码视频| 日韩传媒在线| 久久精品国产亚洲5555| 很很干很很操| 久热这里只有精品9| 国产精品婬乱一级毛片彝族| 欧美72网页| 偷拍 欧美 日韩| 亚洲有薄码区日本系列中文字幕| 97操b| 一区二区娱乐网站| 亚洲激情欧美色图| 欧美日韩香蕉| 日韩大香蕉精品在线视频| 岛国毛片在线观看免费| 熟女中出视频| 欧美 精品国产制服第一页| 又黑又大又粗| 大香蕉欧美| 好吊色在线观看| 九九AV| 99热这里只有精| 日日超碰亚洲| 精品久久在线区一区| 日本操逼视频免费| 神马久久久久眼| 欧美一级在线观看成人| 干b在线性社区| 国产91av在线播放| 97国产天堂岛| 夜夜影视四色| 欧美九一精品久久久熟妇| 国产三级中文有码在线视频| 超碰久久网| 蜜桃无码AV一区二区| 久久久极品| 狠狠狠狠狠干| 试看日韩黄片| 啊啊啊啊啊啊啊啊啊啊在线观看| 日韩久久.一级黄色片| 日本黄色天堂| 久9热| 免费岛国一级片| 久久精品老司| 欧美自拍偷拍免费观看| 美女好片色日本| 九九热免费国产视频婷婷伊人五月 | 亚洲国产欧美另类自拍| 九九人妻| 黄色网址久久精品欧美喷水| 欧美成熟性爱精品| jiujiujiujingpin| 99视频内射三四| 男人天堂网站| 久久夜精品一区二区三区| 在线日韩视频| 日本人妻丰满熟妇久久久久久| 曰本91情色| 色五月综合网| 亚洲一区中文精品| 日本亚欧爱爱| 丰满少妇一区二区三区专区| 操高情无码| 99999久久精| 国产亚洲色婷婷99精品91| 亚洲无码久久久久久久| 日韩欧美日韩| 人乳av| 91黑丝少妇| 色欲日韩欧美在线一区| 国产精品九九九| 黄站在线免费观看| 亚洲影院小综合| 婷婷五月天成人网| 亚州一区二区成人片免费| 加勒比99999| 欧美亚洲美少妇一区二区| 99无码精品| 欧美一级久久久久久久大片动画 | 1769成人国产精品视频| 精人妻无码一区二区三区伊人直播| 口爆综合网| 强奸乱伦av电影| 超碰精品日韩欧美国产| 78精品在线| 国产精品九九| 天天综合欧美综合| 人妻啊啊人妻啊| 人妻中文字幕日韩电影| 久久这里只精品免费福利| 91精品人妻| 亚洲综合 欧美| 天天综合香 ld视频| 五月天婷婷激情| 日韩av一级黄片| 欧美aa一级片| 欧美福利视频啊啊啊啊| 国产97在线视频| 91老司机精品| 日韩精品亚洲一二三| 大香蕉92| 插入粉嫩少妇视频| 精品二999| 青青草色情网站视频| 青草香蕉网| 蜜乳成人AV| 久久熟女嫩草成人片免费| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久国产对白激情浪潮 | 亚洲麻豆18发?| 日韩欧美一级特黄大片| 91AV入口| 51久久夜色精品国产麻豆| 人人 操人人 操人人| 国产白丝AV| 97 视频在线| 熟女人妻久久中文字幕一二区| 欧美制服另类丝袜| 高清一区AV无码| 天天肏美女| 91网亚洲| 校园春色五月天| 亚洲欧美在线综合| 综合网少妇| 色九色久| 97爱综合| 久久亚洲欧美中文字幕国语 | 99老司机精品视频在线观看| 无码高清操逼| 黄色无码高清黄色无码网站| 自拍偷拍第26| 国产性爱在线视频一区二区| 人人操人人搞人人草| 操逼1区| av无码精品久久久久| 欧美伦乱爱| 欧美一二级| 欧美亚洲特P| 久久91| 国产精品成人无码a v毛片| 国产99精品一区二区三区免费| 国产精品自在线发布| 狠狠激情综合狠狠操中文字幕| www超碰| 蜜桃臀 后入 一区 二区 三区 在线| 久久亚洲天天做| 午夜无码熟妇丰满人妻| 撸无码不卡免费视频| 啊啊啊免费视频| 26uuu偷拍亚洲欧洲综合| 亚洲欧美中文一区二区三| 九九Av| 男人的天堂在线2| 男人的天堂久久狠| 本道综合精品| xxxx网站亚洲精品| 婷色五月| 伊人991| 久久久久99999| ji熟女.com| 日本九九九九| 色天堂综合| 另类欧美综合| 欧美 日韩 亚洲 春色| a在线观看| 韩国女主播青草在线| 欧美午夜熟妇黑人精品91| 无码精品久久| www.久久| 青青草久草AV| PMv在线观看| 婷婷久久综合久| 东京热精品97综合网| 日韩国产九九精品一区二区三区毛片| 91日韩网站| 国产传媒日韩欧美| 无码伊人久久大杳蕉中文无码| 欧美 亚洲 大香| 色香av| 日本韩欧美在线播放a| 91人妻视频在线| 另类欧美色| 综合久久欧美| 97一区二压| 久久在线观看免费视频| 女人高潮大叫一级毛片| 新精精品久久精品| 男女啪啪啪18禁网站| 九九黄色网| 97久久精品不卡| 国产99精品一区二区三区免费| 怡红院视频在线| 麻豆色99999| 成人性爱全视频观看| 欲色影视综合吧| 试看60秒 爽| 色色五月婷| 欧美丰满少妇交换91欧美精品| 家庭乱伦国产| 欧洲精品在线播放| 亚洲巨爆乳一区二区三区四季网| 五月天久久久| 九九九九一区| 亚洲精品美女久久久久久久久| 久久超碰av在线| 国产久久成人| 啊啊啊好舒服好爽啊啊啊视频| 日本影视久久免费| 成人国产二区三区在线,男女精品。| 国产精品自在自拍视频| 美日韩一二三区| 国产女人与拘做受视频免费| 91欧美另类| 欧美一级久久久久久久大片动画 | 日韩一级欧美一级国产一级台湾| 久久午夜伦| 欧美色性情| 欧美午夜精品久久久久久超碰| 日韩91网站| 久久久一级| 狠狠婷婷亚洲中文综合久久| 不卡超碰护士AV在线免费播放| 久久大黄片| 吉川爱美98堂在线| 国产成人精品必看 | 欧美性高潮| 69超碰综合| 精品人妻一区二区三区四区石在线| 高树玛利亚无码流出| 亚洲春色欧美激情自拍| 91网站视频在线观看| 久久精品毛片免费不卡| 久久精品91| AV九九| 综合另类| 97超碰亚洲| AV无码久久久精品| 亚洲色图A| 97精品国产97久久久久久户外免费| 人妻性爱一区二区| 91丝袜在线视频| 操逼逼无码| 亚洲国产综合图区中文字幕 | 人人操欧美风骚| 欧美亚洲美少妇一区二区| 国产精品无码在线| 日韩熟女精一区二区三区不卡| 国产精品2020| 99久久精品无码一区二区| 久久久亚洲精品中文字幕人妻| 欧美日韩99精品麻豆传媒| 亚欧免费| 97碰碰色| 亚洲欧美精品久| 大香蕉丝袜一级片| 免费看黄片现成| 人人澡人人澡人人| 真实高潮91| 家庭乱伦网站国产| 少妇综合| 成人精品水蜜桃久久久久久久| 亚洲av在线免费观看| 精品视频免费在线一区| 91色插| 老女人老91妇女老热女| 大香蕉免费中文| 亚洲第一精品在线视频| 综合欧美亚洲| 欧美熟女逼久久久久久| 久草精品热视| 亚洲五月婷婷| 亚洲精品国产熟女| 91性片| 日韩99精品视频综合区| 人妻丰满熟妇av无码区蜜桃| 欧亚不卡| www.狠狠干.coom| 国产亚洲色婷婷久久99精品91葵花宝典 | 一区二区三区美女超清| 97伊人超碰| 九九九九九九九九九九九九九九九女| 欧苏综合色综合| 日韩av影片在线观看| 日韩精品在线放| 免费视频一二三区| 久久青娱乐| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 色97| 涩五月婷婷| 国产色呦呦| 国产日韩精品无码去免费专区国产| 久久精品国产亚洲粉嫩| 日本天天干天天日一区| 亚洲中文字幕日产无码久久| 久久欧美1卡2卡3| 99爱在线视频| 性爱av在线免费观看| 日本精品无码三级网站| 一级二级三级黑人无码| 久久久久亚洲| 俞拍久久国应视频| 99热线麻豆| 久久精品成人| 好爽要喷了| 国产欧洲精品亚洲午夜拍精品| 97超碰色屌| 夜夜騷av、一區二區| 肥臀熟女福利视频一区二区| 蜜桃成人1区2区3区| 丁香五月偷拍| 蜜桃色色网站视频三区| 五月花婷婷| 午夜一区| 色色丁香| 天天日夜夜| 青青草日本无码| oumeisetu综合| 91在线欧色| 在现视频女上位好爽| 麻豆精品久久久久久久| 香蕉99秘 精品一区丁香| 蜜桃久久综合视频| 欧美日韩国第一区| 久久的网站啊啊啊啊啊| 欧美激情超碰777| 久久超碰98| 综合激情一一91| 超碰 国产熟女精品一区| 99久在线精品99re8| 欧美午夜熟妇黑人精品91| 蜜臀99久久国产| 啊啊啊啊啊在线| 国产婷婷综合在线观看| AV一区观看| 乱论91| 97婷婷色| 国产在线不卡导航| 免费久久9999| 国产亚热在线久久| 天天射夜夜骑| 高清国产无码av| 中文字幕精品一区二区精| www网站黄| 亚洲天堂男人在线| 久久久久久久久久久久黄色| 欧美色综合图片| 亚洲色婷婷综合久久久久中文| 999久久久| xxxx网站亚洲精品| 人妻中文在线| 欧洲久久一二线| 无码丰满熟妇一区二区浪潮AV| 性开放中文AV高清无码免费看| 午夜男女爽爽爽在线视频| 午夜精品久久久久久久男人的天堂 | 强奸抽插av| 福利在线黄片| 超碰超碰欧美| 欧美第二页午夜| 亚洲少妇在线观看| 波多野结衣被操50分钟免费视频| 一区二区娱乐网站| 91国产大片| 国产搭汕a级片| 国产一区自拍欧美日韩| 五月婷婷激情综合| 亚洲爱爱视频一区二区| 亚洲97综| 91|九色|国产熟女| 91草草草| 久久区| 99久久精品无码一区二区| 久久欧美按摩999| 玖玖超碰熟| 色牛aV| 91久久久久久| 亚洲大胆人体av| 超碰91在线| 日韩中文字幕在线视频观看| 亚洲国产一级中文综合久久天堂在线免费观看| 91激情国产| 18禁在线视频| 人妻天天夜夜爽一区二区| 加勒比av官网在线| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 一级黄色影片| 97超碰免费生活| 精品无码一区二区三区| 亚洲激情综合| 中文字幕色AV| 无码逼| 中文字日本乱码| 超碰成人人人爽人人爽| 狠狠色丁香| 国产欧美日产一区二区三区 - 国产欧美日 | 久久久9999| 操人91| 中文字幕精品三级久久久| 精品久久久高清无码| 日本丝袜美腿人妻九九| 五月丁香激情四射| 婷婷五月在线视频| 夜夜嗨一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产在线播放成人免费| 狠狠狠狠狠狠| 97神马久久| 欧美十八禁在线看| 久久久久久久久久久精| 成人八戒网站| 99re在线视频国产| 操逼逼中文字幕| 精品美女久久一二三| ji熟女.com| 在线视频五十市| 国产一区二区三区免费视频在性观看| 日韩AV中文字幕电影| 91啪啪| 内射白嫩美女| 国产又粗又大硬免费色网视频| 人夜夜精品网站香蕉嫩草| 春色综合网| 玖色AV| 欧美亚洲自拍另类人妻| 69综合网| 亚洲AV无码翔田千里网站| 97视频www| 精品中文字幕一区二区l - 百度| 97免费视频在线观看视频| 人人操人人操草草| 青青草原成人| 色婷婷综合视频| 中文字幕在线免费观看 | 天天射夜夜操| 国产性感在线观看| 亚洲成人性爱网站在线播放| 330dv亚洲成年视频网| caoni国产亚洲av| 99精品无码| 国产精品麻豆成人AV艾秋| 99热| 好屌色综合| 婬女免费一二三区A片| 欧美激情视频一区二区| 男人的天堂.com| 中文字幕交换人妻| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 男人天堂黄片| 色欧美在线| 日本精品88888888| 黄片色区软件| 欧美在线天堂| 亚洲国产精品久久久男人的天堂| 婷婷深爱五月| 亚洲无码com| 日本精品九九九| 天美国产精品| 一级特级aaaa毛片免费观看| 啊啊啊爽爽| 国产精品午夜福利视频| 夜夜爽爽爽| 2020中文在线一区二区三区| 久久婷婷一区| 大香蕉色网| 91九色精品熟女内射| 亚洲āv网址在线观看| 蜜桃网熟妇| 亚洲综合影片| 国产精品色| 中国女人内射6XXXXX| 欧美极品| 超碰偷拍| 香蕉久久精品| 亚洲黑丝在线| 久久久精品视频免费观看| 日本影视久久免费| 97超碰国产亚洲精品| 午夜天堂网| 91久久久久免| 天天干夜夜一操| 92性色国产午夜福利在线661 | 色情五月丁香| 日韩精品中文字幕一| 日韩性爱小视频| 欧美人妻制服| 一二三四区操操Av| 久久久∴| 欧美se亚洲| 久久久久久性爱片| 五月婷在线| 国产树林里野战在线看| 国产一区自拍欧美日韩| 91超碰在线| 天堂性色| 在线播放欧洲免费av| 日本不卡一区二区三区| 99re69综合| 丝袜内射| 97爱爱爱综合| 理论久久婷婷网 8| 九九性视频| 久久婷综合| 青娱乐日韩无码| 久久精品国产72国产精品福利 | 五月天色图| 国内91熟女人妻丝袜天天精品视频在线 | 超碰97久久| 精品九九九| 好色综合| 国产精品不卡高清在线观看| 欧美色图20p| 超碰免费97| 97在线观看| 亚洲成a人v欧美综合天堂下载| 97亚洲精品超碰| 99999亚洲| 欧美性暴力| 91色花堂| 国产白丝av| 天天草天天日| 国产JDAV无码视频在线观看| 一起草三级AV电影在线观看| 视频国产成人精品日本亚洲18| 国产视频人人网| 秋霞一级鲁丝片A片| 国产精品嫩草影院午夜两性| 亚洲**2021在线观看| 欧美性爱免费短视频| 欧美精品xxxwww| 操逼网免费无码视频| 97av在线视频| 密桃99999| 亚洲综合网图|