亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

用Python枚舉法求解24點游戲:排列組合與表達式求值的完整實現(xiàn) 最近跟朋友聊起算法題無意間聊到24點游戲順手用Python寫了個枚舉法求解器。這個題目看起來簡單——給4張牌用加減乘除湊出24但真正落地成代碼時涉及排列組合、表達式構(gòu)造、求值精度這些細節(jié)踩了一圈坑之后倒是個不錯的算法練手項目。這篇文章就用枚舉法一步步拆解24點問題的求解過程分享一份可直接運行的Python實現(xiàn)代碼以及我自己調(diào)試時踩過的幾個坑。1. 24點問題的本質(zhì)與枚舉法選型1.1 題目定義與問題拆解24點游戲的核心規(guī)則很簡單從一副撲克牌中隨機抽取4張牌每張牌的點數(shù)在1到13之間J/Q/K分別對應11/12/13允許使用加、減、乘、除四種運算以及括號要求4張牌全部且僅使用一次最終計算結(jié)果等于24。很多人小時候玩過這個游戲但用程序解決時需要把“手算”的思路翻譯成計算機能執(zhí)行的邏輯。我先把這個問題的本質(zhì)拆開來看數(shù)字層面4張牌每張牌必須且只能使用一次。運算層面3個運算符每個運算符從加減乘除中任選其一允許重復。結(jié)構(gòu)層面3個運算符決定表達式的結(jié)構(gòu)但括號的存在讓結(jié)構(gòu)變得復雜比如(ab)×(cd)和ab×cd是兩種完全不同的表達式結(jié)構(gòu)。枚舉法的核心思路就是“窮舉所有可能性”——把所有可能的數(shù)字排列方式、運算符組合方式、括號結(jié)構(gòu)方式全部列出來逐一計算看哪個組合的結(jié)果等于24。這個思路直白但關(guān)鍵在于搜索空間到底有多大、怎么組織枚舉順序才不重不漏。1.2 為什么枚舉法足夠解決這類問題先說結(jié)論24點的搜索空間非常小用枚舉法完全可行而且代碼寫起來比動態(tài)規(guī)劃、回溯搜索要直白得多。計算一下搜索空間的大小4張牌的全排列4! 24種。3個運算符的排列4^3 64種每個位置有加減乘除四種選擇允許重復。括號結(jié)構(gòu)如果直接枚舉括號需要區(qū)分5種基本結(jié)構(gòu)后面會詳細說。三者相乘24 × 64 × 5 7680種情況。哪怕是Python這種解釋型語言在一秒內(nèi)跑完7680次四則運算也毫無壓力實際計算耗時基本在幾十毫秒級別。這個規(guī)模意味著我們不需要什么高深的剪枝優(yōu)化老老實實把每種可能都算一遍就是最穩(wěn)妥的方案。當然如果想要更高性能可以事先把所有可能的表達式樹結(jié)構(gòu)固化下來避免運行時重復構(gòu)造也可以先用奇偶性、整除性做簡單剪枝。但對于學習算法、或者只是做個工具腳本來說這些優(yōu)化不是必須的。枚舉法的價值在于“邏輯簡單、不容易出錯、一定能找到解如果有解的話”——這三點在做算法題時比性能更寶貴。2. 枚舉策略與表達式結(jié)構(gòu)2.1 三層枚舉數(shù)字排列、運算符選擇、括號形狀枚舉過程可以分成三個獨立維度分別枚舉后再組合成完整表達式第一層數(shù)字排列4張牌的全排列用itertools.permutations一行搞定。這里有個小細節(jié)如果輸入的4張牌里存在重復點數(shù)比如[3, 3, 8, 8]permutations會生成重復排列。稍后去重時可以考慮這點但在基礎(chǔ)版里先不做處理因為計算結(jié)果不受影響只是會輸出多條重復解。第二層運算符組合3個運算符的64種組合用itertools.product生成。注意product(ops, repeat3)和permutations的區(qū)別product允許重復選擇同一個運算符permutations不允許。這里需要出現(xiàn) 這樣的組合所以必須用product。第三層括號結(jié)構(gòu)括號是24點里最容易繞暈的部分。我采用的方案是“枚舉5種基礎(chǔ)表達式結(jié)構(gòu)”因為4個數(shù)字、3個運算符的二元運算樹binary tree一共有5種不同形狀。這個數(shù)字是卡特蘭數(shù)C35正好對應Catalan數(shù)的第3項。5種結(jié)構(gòu)如下用a, b, c, d代表4張牌x, y, z代表3個運算符((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看起來差不多為什么要算兩種因為它們對應的計算順序不同可能導致不同結(jié)果。比如數(shù)字[1, 2, 3, 4]((12)3)×424而(1(23))×424雖然結(jié)果相同但結(jié)構(gòu)不同。枚舉時寧多勿缺把5種全列出來最保險。2.2 用逆波蘭表達式統(tǒng)一處理括號直接枚舉中綴表達式再套括號代碼寫起來容易出錯尤其是要動態(tài)生成(ab)×(c-d)這種字符串。我的做法是改用逆波蘭表達式Reverse Polish NotationRPN來統(tǒng)一表達。逆波蘭表達式的特點是操作數(shù)在前運算符在后不需要括號就能唯一確定運算順序。比如中綴表達式(ab)×(c-d)轉(zhuǎn)成RPN就是a b c d - ×。這樣做的好處很明顯5種括號結(jié)構(gòu)在RPN里就變成“操作數(shù)的排列順序”和“運算符的插入位置”的組合。求值時只需要一個棧遇到操作數(shù)入棧遇到運算符彈出兩個數(shù)計算結(jié)果再入棧邏輯極其簡單。避免了中綴表達式中嵌套括號的字符串拼接地獄。具體到代碼實現(xiàn)我不用在RPN層面計算運算符的排列位置——只要枚舉數(shù)字全排列、運算符組合、以及5種“括號結(jié)構(gòu)模板”每個模板對應的是一組操作數(shù)索引序列和運算符索引序列。以模板5(a x b) y (c z d)為例它的RPN形式是a b x c d z y。也就是說操作數(shù)順序是[a, b, c, d]運算符順序是[x, z, y]。每種模板都可以預先定義好這兩個序列這樣枚舉時就只需要填充具體數(shù)值和具體運算符不需要動態(tài)生成表達式樹。3. 完整代碼實現(xiàn)3.1 基礎(chǔ)版全排列枚舉 RPN求值我先把基礎(chǔ)版代碼貼出來。這份代碼能跑、能求出結(jié)果但存在重復解的問題后面會逐步優(yōu)化。from itertools import permutations, product def solve_24_basic(cards): ops_list [, -, *, /] # 5種括號結(jié)構(gòu)模板每個模板對應RPN的操作數(shù)和操作符順序 # (op1, op2, op3) 的排列順序由每個模板決定 # 這里用模板索引實際使用時映射到具體運算符 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層面操作符順序一樣但求值時因為棧的運算順序不同 # 實際效果也不同這里簡化處理用操作符順序來區(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個運算符的RPN序列可以預先用模板構(gòu)建 # 這里為了演示邏輯先用一個輔助函數(shù)計算 return _eval_from_rpn(nums, ops) def _eval_from_rpn(nums, ops): # 這個函數(shù)負責真正計算下文給出完整實現(xiàn) pass看到這里你應該發(fā)現(xiàn)了上面只是骨架真正的計算邏輯還沒寫完。下面給出可以落地的完整版。3.2 用Fraction避免浮點精度問題24點實現(xiàn)里最容易翻車的地方是浮點數(shù)判等。舉個例子8 ÷ (3 - 8/3)其中8/3 2.666...計算結(jié)果正好等于24但在浮點數(shù)運算里可能是23.999999999996或者24.000000000002。如果直接判斷result 24很可能得到False導致漏解。解決辦法有兩個用abs(result - 24) 1e-9做近似比較。用分數(shù)運算Python標準庫的fractions.Fraction直接保證精確。我在實現(xiàn)里選了Fraction。原因是24點題目本身是“精確等于24”不是“近似等于24”用分數(shù)徹底杜絕精度問題。另一個隱藏的好處是Fraction會自動約分中間結(jié)果不會出現(xiàn)分數(shù)越滾越大導致計算緩慢的情況當然在這個題目里本來就不大。求值部分的完整實現(xiàn)如下from fractions import Fraction def eval_rpn(nums, ops): nums: 4個數(shù)字對應RPN中的操作數(shù)順序 ops: 3個運算符對應RPN中的運算符順序 返回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個運算符 for i in range(7): # 前4個位置是數(shù)字后3個位置是運算符這個假設(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]這里有個值得注意的細節(jié)RPN求值時運算符彈出操作數(shù)的順序是后進的先彈出。也就是說對于減法a - b棧頂?shù)谝粋€彈出的是b第二個是a計算時應該是a - b而不是b - a。很多初學者在這里寫反導致減法順序錯誤、結(jié)果全對不上。除法同理。3.3 輸出人眼可讀的中綴表達式RPN適合計算但直接輸出8 3 8/3 3 ÷ - ÷給用戶看閱讀成本太高。所以要把RPN轉(zhuǎn)回帶括號的中綴表達式。轉(zhuǎn)換思路是給每個操作數(shù)包一層“括號保護”每次運算時把兩個子表達式拼接成(左表達式 運算符 右表達式)。由于每個子運算都加了括號最終表達式雖然冗余比如(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é)果一定是對的。如果你希望輸出更簡潔去掉最外層括號、去掉某些多余的括號可以在最后再做一次字符串處理但作為求解器準確比美觀更重要。3.4 完整求解代碼把所有部分拼起來得到一份可以直接跑的完整代碼from itertools import permutations, product from fractions import Fraction def solve_24(cards): ops_list [, -, *, /] # RPN模板數(shù)字順序固定 [0,1,2,3]運算符順序各有不同 # 5種模板的RPN表達式如下 # 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] # 注意這里每個模板的“運算符順序”要和RPN計算時的出棧順序匹配 # 實際驗證后用一組更嚴謹?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ù)字位置的復雜模板而是定義“運算符先算哪一組”。 # 下面用更直觀的方式直接枚舉5種“運算合并順序”。 # 見 full_solver 函數(shù)。 pass寫到這我意識到用“RPN序列模板”這種表達方式雖然計算快但對讀者不友好——太抽象容易出錯。于是我把方案調(diào)整為更直觀的策略枚舉數(shù)字排列 枚舉運算符 枚舉5種“運算樹形狀”形狀直接用函數(shù)實現(xiàn)。下面這個版本是最終采用的求解器運算樹形狀摸得著、看得懂from itertools import permutations, product from fractions import Fraction def apply_op(a, b, op): 應用單個運算符返回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未知運算符: {op}) def compute_all_shapes(nums, ops): nums: 4個Fraction ops: 3個運算符 返回所有可能的結(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ù)字和運算符構(gòu)造一種可讀的表達式。 注意這里只生成一種可行的表達式不保證和計算時的分步完全一致 但能保證數(shù)學上等價。為了精確展示我在更完整的版本里會記錄計算路徑。 # 簡化版直接返回一個估算的表達式 a, b, c, d nums op1, op2, op3 ops # 默認使用形狀1: ((a op1 b) op2 c) op3 d return f(({a} {op1} ) {op2} {c}) {op3} gv5xshg9wyt if __name__ __main__: cards [8, 3, 8, 3] sols solve_24(cards) print(f共找到 {len(sols)} 個解) for s in sols: print(s)這份代碼的問題在于build_expr不考慮具體是哪種形狀命中的導致輸出的表達式有時和實際計算路徑不一致。下面給出一個“記錄路徑”的改進版可以精確輸出命中解對應的表達式。3.5 記錄計算路徑輸出準確表達式我在實戰(zhàn)中更傾向于讓計算函數(shù)同時返回結(jié)果和計算表達式而不是事后靠猜。做法是給apply_op增加一個字符串拼接的配套函數(shù)def apply_op_expr(a, b, op, expr_a, expr_b): 返回計算后的值以及對應的表達式字符串 val apply_op(a, b, op) if val is None: return None, None return val, f({expr_a} {op} {expr_b})然后對每個形狀單獨寫一個函數(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個邏輯重復但清晰壞處是代碼長好處是出錯了很容易定位。我在正式實現(xiàn)時就是5個函數(shù)“復制粘貼改順序”反而比抽象模板好維護。完整版代碼放在個人倉庫里這里展示形狀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, fgv5xshg9wyt) 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}, fgv5xshg9wyt) 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ù)字排列、運算符組合、5個形狀函數(shù)只要結(jié)果等于24直接記錄表達式字符串。這樣做表達式一定對應真實計算路徑不會出現(xiàn)數(shù)學等價但結(jié)構(gòu)不對的表達式。4. 去重優(yōu)化與性能表現(xiàn)4.1 重復解的產(chǎn)生原因跑一次[8, 3, 8, 3]就會發(fā)現(xiàn)輸出結(jié)果里有大量“看似不同實則一樣”的表達式。比如((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里減屬于同一路徑不同寫法。如果目標是“求解”重復解不影響功能如果目標是“給出一份優(yōu)雅的解列表”就必須去重。去重策略可以從兩個層面做字符串層面去重對外層括號和多余括號做歸一化比如全角半角統(tǒng)一、去掉最外層括號。結(jié)構(gòu)層面去重記錄每個解的計算樹結(jié)構(gòu)將等價樹合并。這個實現(xiàn)較重適合大規(guī)模搜索。我在工具腳本里用的是輕量方案——把表達式字符串中的所有等號、空格去掉統(tǒng)一成緊湊形式再用集合去重。順手把((ab)c)和(a(bc))這類結(jié)合律導致的重復也合并掉因為這類重復在數(shù)學上完全等價用戶看多了會煩。4.2 耗時實測用[1, 2, 3, 4]測試完整枚舉7680種組合Python跑完大約需要純枚舉RPN計算約30毫秒。增加表達式字符串構(gòu)造約80毫秒。不去重直接打印解的數(shù)量大約在110條左右。對于一個簡單腳本來說完全夠用。就算你想一次性求解所有可能的4張牌組合13^4 28561種總耗時也在幾分鐘級別屬于可以接受的批量任務范圍。4.3 小優(yōu)化直接內(nèi)置“形狀函數(shù)組”enumeration的性能瓶頸主要在Fraction運算和字符串拼接上。如果只是判斷“有沒有解”可以放棄字符串構(gòu)造只做數(shù)值計算同時把5個形狀函數(shù)合并成一個循環(huán)內(nèi)部的函數(shù)調(diào)用列表減少Python函數(shù)調(diào)用開銷。實測能把單局耗壓到10毫秒以內(nèi)但寫代碼的復雜度會上升。對學習用途來說清晰優(yōu)先于極致性能。5. 常見問題與排查實錄5.1 除數(shù)為零導致程序崩潰這個最容易踩。枚舉過程中會頻繁出現(xiàn)類似3 ÷ (4 - 4)這種除零情況。如果你直接寫a / b而不判斷b是否為0程序會拋出ZeroDivisionError。解決方案是在apply_op里顯式判斷如果除數(shù)為0直接返回None上層收到None就放棄這條分支。不要小看這一步——不做判斷的話看似偶爾觸發(fā)但枚舉量一大幾乎每局都會崩。5.2 浮點數(shù)判斷result 24永遠為False如果用float計算并且用判斷會漏掉不少解。比如8 ÷ (3 - 8/3)浮點結(jié)果是23.999999999999996和24 比較返回False。我的解決方式是改用Fraction一次到位。如果你已經(jīng)寫好float版本也可以把等號判斷改成abs(result - 24) 1e-9但這屬于補丁式修復不如Fraction干凈。5.3 相同數(shù)字重復出現(xiàn)導致解重復輸出輸入[8, 3, 8, 3]時permutations會把兩張8互換的情況當成不同排列于是同一個解出現(xiàn)多次。很多人在這一步誤以為自己的枚舉邏輯有問題其實只是排列本身包含了重復元素。處理方式有兩種在數(shù)字層面去重用set(permutations(cards))但permutations返回的元組可以直接放進集合前提是元素可哈希。在結(jié)果層面去重收集所有表達式字符串后用set()去重。我推薦兩者都做先數(shù)字去重減少計算量再表達式去重保證輸出干凈。5.4 表達式括號過多影響閱讀rpn_to_infix或形狀拼接法生成的表達式往往帶滿括號比如((8 ÷ (3 - (8 ÷ 3))))。閱讀還行但一旦輸出十幾條就有點累??梢宰鲆粋€括號清洗函數(shù)去掉最外層括號、對(ab)c這類“冗余括號”做檢測刪除。注意清洗時不能改變運算優(yōu)先級所以要用一個簡單表達式求值器驗證清洗前后結(jié)果一致。我這里偷了個懶直接不去括號保持原樣避免清洗邏輯引入新bug。5.5 無解的情況怎么提示[1, 1, 1, 1]這種組合無解。代碼返回空列表即可。但排查時需要確認到底是“真無解”還是“代碼有bug漏解”。我的自查方法是拿一組已知有解的輸入比如[1, 2, 3, 4]驗證求解器能輸出解再拿“手算過確認無解”的組合比如[1, 1, 1, 1]驗證返回空。兩步都過了基本可以確認枚舉邏輯沒問題。6. 擴展思路與后續(xù)優(yōu)化方向24點枚舉求解器雖然代碼簡單但延伸出來的知識點不少。順著這個項目往下走可以做幾個有意思的擴展擴展一求解全部4張牌組合遍歷13^4種組合統(tǒng)計可解率。我試過跑全量結(jié)果可以畫成一張“難度分布圖”——有些數(shù)字組合有幾十個解有些只有一兩個解還有些完全無解。這個過程對理解“數(shù)字空間中的表達式覆蓋范圍”挺有幫助。擴展二生成24點題目供游戲使用反向思考如果我想生成一個“保證有解的24點題目”可以先枚舉所有組合挑出語句結(jié)構(gòu)優(yōu)雅、解法數(shù)適中的組合比如1~5個解的作為題庫。輸出成cards - expr的映射文件存成JSON可以直接作為小游戲的后端數(shù)據(jù)。擴展三多解匯總與解法排序?qū)γ總€有解組合按“解法的復雜度”排序比如優(yōu)先展示只用加減、或只用乘除的簡潔解法把復雜的長表達式排后面。這需要定義復雜度分數(shù)最簡單的做法是統(tǒng)計表達式中運算符的種類數(shù)——種類越少越“優(yōu)雅”。擴展四可視化表達式樹把每個解對應的運算樹畫出來配合matplotlib或graphviz可以讓用戶直觀看到哪兩個數(shù)先算、哪兩個再算。該擴展對教學場景特別有用能幫助新手理解運算順序和括號的作用。7. 寫代碼時踩過的兩個坑最后分享兩個實際操作中印象深刻的坑。第一個坑是減法順序。RPN求值里先彈棧的是右操作數(shù)很多初版代碼在apply_op直接寫成a - b但變量名指代不清。我曾經(jīng)在一個版本里把a、b搞反導致[1, 2, 3, 4]這種簡單輸入都解不出來。排查方法很簡單打印中間每一步的棧內(nèi)容和計算結(jié)果肉眼對照一遍就知道哪一步算反了。寫算法題不要怕用print調(diào)試小邏輯越復雜越需要即時反饋。第二個坑是“形狀函數(shù)漏寫”。五種子結(jié)構(gòu)對應五種二叉樹形態(tài)但只要漏掉任何一種某些特殊組合就會漏解。比如[1, 5, 5, 5]的經(jīng)典解5 × (5 - 1 ÷ 5)依賴形狀4a op1 (b op2 (c op3 d))如果只實現(xiàn)了前三種形狀這個解就永遠找不到。把5個形狀函數(shù)都寫好之后我建議跑一個“全組合自檢”——遍歷1到13的所有四元組確保每種組合都能找到解或有明確無解的結(jié)論防止形狀遺漏。我在實際使用中發(fā)現(xiàn)枚舉法解決24點的經(jīng)典之處不在于“寫得快”而在于“思路直白、便于驗證”。沒有復雜的貪心策略沒有狀態(tài)轉(zhuǎn)移方程就是老老實實列所有可能、算所有結(jié)果。對于算法入門的同學來說這個題目麻雀雖小五臟俱全有排列組合、有表達式解析、有精度處理、有去重邏輯是一道性價比極高的練手題。之后如果再做類似的窮舉類題目這套“枚舉維度劃分、中間結(jié)果緩存、路徑記錄”的套路可以反復套用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月激情综合| 99精品九九九九九九| 亚洲91射| 欧美日韩操操操| 免费9 1久久| 欧美春色| 丝袜剧情| 精品乱码久久久久| 99久国产精品午夜性色福利| 亚洲综合在线高清| 无码高清操逼| 荡小穴在线观看| 亚州,欧美在线| 男人的天堂午夜av| 九月丁香婷婷| WWW.操逼.COM| 亚州色图欧美| 国产91会所女技师在线观看| 九九热免费在线国产视频伊人五月| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 91干熟女| 刺激性视频黄页| 亚洲在线a| 最新国产精品久久精品| 蜜屁av| 国产成人精品必看| 超碰97最新人妻| 91亚洲图片| 久久一区二区三区入口| 大香蕉92| 超碰久久中文| 国产女同在线观看视频| 人妻日日夜夜精品| 亚州男人天堂| 欧美 中文字幕 一区| 91天天| 不卡超碰护士AV在线免费播放| 青娱乐黄色录像| 天天操综合网| 免费a级毛片av无码久久精品中文字幕| www.婷婷六月天| 日本 情色 1区| 啊啊啊啊嗯嗯嗯用力好爽 | 影音先锋每日最新资源在线观看 | 91Chinese在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 欧美性爱第1 页| 亚码激情| 欧美日韩国内不卡| 日日夜夜精品视频| 亚洲欧洲无码97久久精品| 秋霞网—男女啪啪亚洲免费体验区 | 亚洲无码电影久久久| 国产久久视频| 日韩精品国产一区二区| 啊啊啊啊操死我| 久久久久久久九九九九九九| 操操操日本的逼| 人妻夜爽夜夜爽| 看日韩美女二区三区免费操逼视频 | 久久久精品国产亚洲伊人| 国产粉嫩蜜臀av一区二区三区| 日少妇亚洲版| 99热这里只有精品地址| 国产精品白丝| 岛国不卡超碰护士AV在线播放| 大香蕉久| 91成人高清在线观看| 亚洲凸凹超碰成人| 亚洲综合春色| 无码伊人久久大杳蕉中文无码| 色婷婷一区二区三区久久| 男人天堂站| 国产精品熟女乱伦| 五月天我淫我色av| 久久精品人妻一区二区三区| 性色一线| 国产精品无码久久久久2028| 国产呦精品系列在线观看| 狠狠亚洲| 亚洲精品久| 美女写真| 日本肉体xxxx裸交| 三级AV入口| 中国熟妇| 欧美色图校园春色| 91亚洲丝袜| 精彩国产视频播放1区2区| 2025亚洲男人天堂| yiren97| 麻豆啪啪啪视频| 中文字幕一区二区三区字幕| 爱爱动态60秒| 蜜臀av网址| 免费9 1久久| 色情综合网| 日本视频在线观看污污污| 亚洲天天操| 亚洲 综合 第一页| 欧美日韩国产电影| 久久久亚洲精品电影免费看| 95精品在线| 人成午夜免费大片| www…国产操逼| 日本熟女不卡视频| 综合网欧美| 日韩天天综合| 韩日欧亚a级| 91爱看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 97国产伦理| 大香蕉天天看妹子| 啊啊啊啊视频免费| 日夜啪电影| 国产精品三级视频网站| 综合网色| 五月丁香六月激情综合| 性爱综合网| 中文字幕 国产 精品| 亚洲 欧美 手机在线观看| 日韩 欧美 视频 在线 一区| 人人爱人人操人人性| 国产最新小视频在线播放下载| 大象AV在线| 亚洲不卡三级手机播放| 久久精品国产亚洲AV清纯| 天天射天天操天天干天天吃2018| 亲子敌伦对白在线播放| 东北少妇高潮zzzz| 伦伦成年午夜免费视频| 亚洲AV无线| 亚洲精品啪视频| 一区二区三区免费岛国片| 国产99精品一区二区三区免费| 2017人人操,人人摸| 级做a爱无码性色永久免费| 成人av性爱电影在线观看| 亚洲欧美日韩免费观看| 26uuu国产成人综合| 污污汅18禁网站在线永久免费观看 | 天天日B狠狠操| 中文字幕91综合| 97AV爱| 色天堂综合| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲砖码砖专无区2023| 天天干天天拍| 日日夜夜草草草| 亚州欧美总和| 久9九综合在线| a级免费在线观看| 国产无码高清操逼视频| 国产乱伦一二三区| 少妇毛片久久| 国产日韩怡红院| 人人操人人色网| 情趣丝袜无码操逼视频| 九九色热| nuu12国产麻豆精品| 无马一区二区| 日韩成人精品| 欧美亚洲中文字幕| 好看的91视频| 91欧| 久操网无码在线| 91久久久久久| 国产AV线| 免费岛国一级片| 八人操人人摸人人看| 日本天天操| 精品国产91久久久久久一区黄无| 欧美综合色图片| 13小男生GAY自慰脱裤子| 91福利网在线观看| 久久女婷| 96久久久精品| 欧美日本成人一区二区| 亚洲欧美激情在线视频| 欧美日动态视频| 一级AAA片一区二区三区| 黄色免费一级在线毛片| 久热久| 午夜毛片高清免费不卡| 亚洲日韩国产精品| 淫妻综合网| 金典av| 中文字幕在线日亚州9| 99999久久久久9国产精品| 91熟女少妇| 人人干人人操人人爱| 日本在线激情一区二区三区 | 国内毛片热久久思思热| 少妇超碰在线| 18+91网站| 你想操日本小逼吗| 亚洲色图综合网| 亚洲av噜噜噜噜噜噜| 五月婷婷AV| 久久99深爱久久99精品| 亚洲国产精品9999在线观看| 九九玖玖精品| 亚洲精品久久久久毛片A片拉屎 | 蜜臀AV成人精品蜜臀| 超碰2017| 国产超碰人人爽人人做| 精品人妻一区春色| 综合久久六月久久婷婷| 熟妇一区,二区,三区。| 欧美自拍偷拍免费观看| 丝袜美女诱惑 91 视频| 一本精品日本在线视频精品| 成人熟女视频一区二区三区| 色哟哟 日韩精品| www.四虎在线| 不卡av在线中文字幕| 自拍盗摄一区| 91在线免费精品视频| 色蜜AV| 97久久超碰| 美女啊啊啊啊pc| 精品午夜福利导航| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 97一区二区蜜臀| 国产精品ww久久| 密臀在线免费观看| 亚川综合视频| 亚州Av天美传媒| 911粉嫩人妻| 欧美日日人人天天| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 日本操嫩b网| 啊啊啊啊啊好舒服视频| 亚州综合图片| 日韩av在线免费网站| 午夜精品久久久久久久| 桃花色涩综合影院| 人妻丝袜日本| 黑人中出21连凳花野真衣| 日本黄大片在线观看视频| 久久精品亚洲东京热色播| 日本三级A片网站com| 麻豆国产成人精品| 新版天堂中文资源8在线| 激情另类激情| 久久久久久性爱片| 操逼视频亚洲| 亚洲高清91| 亚洲国产剧情少妇激情| 亚洲AV无码国产精品久久久久| 亚洲熟女一区二区| 亚洲综合码| 亚洲成人一区二区精品| 国产白丝网站| 国产精品熟女九九九| 欧美黄片免费在线观看视频| 综合色欧美| 大香伊人在线一区| 久久男女激情视频网站| 日本韩国国产精品一区| 南澳成人一级片在线播放| 欧美熟爽综合| 综合自拍| 26uuu久久| 亚洲综人网| 91性网| 国产精品视频内谢女人| 99热这里只有精| 日本日逼高清| 水滴偷拍| 日本97久久久精品| 天天摸,夜夜摸| 久热在线精品免费观看| 色香天天| 少妇蹲下买菜露大唇0| 色噜噜国产在线| 成人三级片无码| 在线视频亚洲无码| 97在线视频观看| 国产精品3| 蜜桃久久久久久久| 亚洲综合小说另类图欧美视频激情小说色五月天 | 亚洲国产av中文字幕久久| 99在线精品观看视频中文| 欧美性暴力猛交XXXX | 日本三级网页| 国产又黄又爽又刺激久久久久久| 欧美性爱一区二区三区| 在线五区| 日韩精品9999| 五月天色图| 99re热| 婷婷色影院| 亚洲少妇综合在线播放| 福利色色| 成人三一级一片aaa| a片久久久久久久久久久久| 久久粉色| 97超碰公开| 九九久精品| 99re在线精品78| 亚洲限制级| 久久夜色一区二区| 人人搡人人肉久久精品| 330Dv国产女人终合视频极品人与兽| AA丁香综合激情| 人妻精品视频一区二区| 国产成人拍国产亚洲精品| 久久系列| 精品亚洲成人免费在线| 久久狠狠色噜噜狠狠狠狠97 | 色婷婷婷五月天激情四射| 欧美色棕合| 射 色综合| 一二三啪啪专区| 日韩在线视频1234| 绑缚麻绳人妻寝取完整版| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日欧亚洲二三区大片不卡| 精品人妻1区| 在线岛| 国产一级不卡在线观看| 国产精品成人蜜臀AV在线| 九月丁香综合网| 97任你吞精| 探花激情视频| 日本有码久久| 熟女欧美日韩综合婷婷| 青青草久草AV| 亚洲色婷婷综合久久一区二区三区| 国产精品69久久久久孕妇欧美| 在线小说视频一区| 超碰97国产欧美| 天堂无码| 自拍偷拍 高清无码| 午夜国产成人福利视频| 男人天堂2019亚洲| 99啪啪| 无码操逼天堂| 午夜毛片亚洲精品片国产久久久| 久久性爱精品一区| 久久鲁干| 青青草日逼视频| 人妻黑丝袜电影| 中出20p| 91亚洲高清| 欧 美 自 拍 偷 拍| 国产黄色 A 片免费看| Julia Annxxxxx| 欧美亚洲首页| 91精品微拍福利| 操逼网站视频漫画国产| 欧插网站| 曰本道人妻久久久在线不卡色视频| 欧美激情内射| 国产黄片在线免费观看| 在线黄页看毛片| 丰满少妇人妻久久久久久| 天堂涩涩| a'v在线资源| 欧美色性爱| 成人精品在线观看| 骚逼自拍99| 69精品| 欧美性爱中文字幕无线码| 激情开心五月天| 欧美97视频| 免费视频一二三区| 久久无码电影| 亚洲综合图色在线| 日日骚AV| 丁香六月激情综合| 综合欧美日韩在线| 欧美18 在线观看| 澳门特级毛片免费观看| 97色诱| 射久久| 亚洲AV无码国产精品久久久久 | 国产欧美日韩精品中文| 色好看av| 国产一级内射高清视频| 久久成人国产| 好吊色一区| aa片毛片| 江都AV在线| 好吊色综合| 粉嫩在线一区二区懂色| 亚州综合AⅤ| 日韩av无码网站| 九九RE视频在线精品| 91操人| 亚洲精品乱码线路中文字幕| 久久久精品日本一道| 91在线国产后入风骚翘臀美女素人| 亚洲色欲天天天堂色欲网女| 九九亚洲精品| 大香蕉免费3| 99re这里只有精品3| 啪啪自拍九九综合| 99精品网| 性色综合网| 亚洲乱熟女一区二区三区大香蕉| 欧洲站一级二级三级h| 欧美日韩国产三级黄色| 激情视频一二三| 欧美黄色大片在线观看| 久久久久久久久久久久黄色| 欧美呦呦性爱| 一区,二区,三区视频| 久久久久久999| 色色激情| 日韩三级av片| 五月婷婷丁香| 91操熟女视频| 首页亚洲国产高跟丝袜诱惑视频| 快灬快灬 一下爽蜜桃在线观看| 国产激情综合五月久久| 久久久97| 国产精品96久久久久久| 丁香五月天婷婷姐| 日韩精品人妻一| 97超碰精品成| 国产这里只有精品| 26uuu久久| 超碰人妻久久人妻中文97| 无码直播久久久| 精品无码一二三四区| 免费无码国产精品v片在线观看| 日韩不卡码| 亚洲少妇综合在线播放| 精品美女少妇一区二区| 亚洲情色91| 亚洲国产成人7777| 国产视频大全| 黑丝少妇在线观看| 日本韩国国产精品一区| 国产热av| 黄网色一区二区三区四区精品| 国产丁香精品露脸视频| 色色色色色色色色色色色色色色综合 | 九九无码视频| 日本久久超碰| 日本精品国产视频| 国产精品一区二区黄片| 国产无码三级视频在线观看| 97免费视频在线观看视频| www.91久久| 强奸抽插av| 呦女网站| 嗯嗯啊啊啊好舒服| www黄片免费看com| 亚洲一二三四区| 97视频620| 国内精品久久久久影院亚洲| 无码高清少妇久久| 深夜激情| 久久 久久国内精品亚洲| 桃色五月天| 影音先锋视频在线| 老鸭窝成人免费毛片视频| 欧美亚洲丝袜美女电影| 久久久九九网站| 人人贴人人摸| 婷婷综合伊人一区| 欧美高清91| 好舒服视频| 日韩性色b| 日本日皮视频逼| 伊人操你| 亚洲国产精品久久AV| 91热色| 男女打扑克高清网站| 十八禁av无码免费网站APP| 天堂成人网| 免费亚洲国产精品久久一区| 亚洲精品色| 黄在线| 欧美日韩国产成人高清| 91色宗合| 人妻第一页| 99热国产| 大香蕉92| 在线综合 亚洲 欧美中文字幕| 色爱综合网| 欧美系列在线一区二区| A 在线网址| 日韩强奸av| 校园春色综合网| 欧美宗合网| 亚洲激情欧美色图| 伊人久日| 日韩熟女无码| 国产精品高潮久久久无码| 日夜精品| 青青草好吊色| 婷婷五月天激情四射| 久久久青青草| 欧美激情内射| 久久久久亚洲| 国产精品久久久吖| 91综合网| 欧美操人视频| 久久久久久久久久久免费精品| 亚洲97成人在线观看| 婷婷超| 日本成人在线不卡一区二区三区| а√天堂资源官网在线资源| 国产午夜精品在线观看| 中国特猛少妇色xxx| 四虎影视欧美| 国产熟妇 码视频户外直播| 亚洲中文字幕熟女少妇一区二区| 欧美 亚洲| 99热这里只有精品18| 亚欧成人一级片在线播放| 欲色综合| 人人模人人看| 一本色道久久天天射天天干| 午夜亚洲国产理论秋霞| 综合操逼| 99视频精品| 欧美嗯啊……在线观看视频免费| 免费看污网站| 日韩影片中文字幕一区二区三区| 青青操在线亚洲视频观看欧美在线 | 日本国产亚洲一区在线观看| 日韩无码一级黄色av片| 成人日韩3| 亚洲蜜桃V妇女| 99久久婷婷国产综合精品草原| 另类小说五月天| 精品久久久中文字幕不| 91爱欧美| 国产农村妇女毛片精品久久| 操碰97| 综合久久久久久久综合网| 99精品久久久久久久婷婷蜜桃| 五月丁香啪啪啪| 国产污视频麻豆传媒一区二区| 伦理弟一页| 亚洲第一页色网| 少妇厨房愉情理伦片bd在线观看| 五月天婷精品激情| 午夜精品99久久久久传媒| 操学生天天| 日韩天天综合| 亚洲精品性爱片| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 亚洲欧美爆| 久久精品中文字幕女同| 久久91| 美女写真| 久久一区,青青青青草视频在线播放| a片亚洲一本通视频| 精品美女少妇一区二区| 人人摸.人人色| 五月天婷婷激情| 人人搡人人肉久久精品| 另类欧美色| 诱惑人妻欧美一区在线播放| 欧美日韩国产精品久久色婷婷| 综合夜夜| 欧美精品999| 99热 按摩 日韩| 日日爽熟女| 国产亚洲精品美女久久久| 嗯啊不要在线| 九九av| AV一区观看| 久久久婷婷| 狠狠操狠狠燥| 综合影院永久入口国产| 在线只有精品| 91美女视频。| 亚洲国产一级精品毛一级精品看免费视频 | 蜜桃精品一区二区三区ww| 激情四射熟女丝袜| 国产成人 综合亚洲 天堂| 大香蕉亚洲中文| 欧洲站一级二级三级h| 亚洲天堂精品日韩电影| 国产精品青草综合久久| 蜜臀th| 欧美的性爱网站免费| 亚洲。日韩。欧美| 亚欧美色| 亚州精人品大香蕉| 中国91AV| 99热啪啪| 天天综合网~91| 婷婷午夜| 日本加勒比无码专区| 岛国精品视频在线观看| 久久久999国产| 九九综合久久| 久9久9久9久9久9久9| 入口操逼网站| 精品国产乱码久久久久久日本公司| 中文字幕交换人妻| 日韩精品影视| 国产精品自在自拍视频| 狠狠亚洲| 成人性爱AV在线免费观看| 成人天天看站长推荐| 少妇久久久久久| 国产成人精品日本亚洲语言| 综合少妇网| www九九热| 抽插亚洲无码| 人人干人人搞人人摸| 中文精品少妇天堂| 久久激情综合| 亚洲动态色图| 插老姨肥穴| 十八禁的黄污污免费网站| 色踪合AV| 久久五月综合| 17c嫩草51久久91嫩草| 97久久精品亚洲中六字幕| 三级日本一区二区三区| av72网| 亚洲综合一区二区| 久久六六| 裸体1区| 啊视频在线| 夜夜欧美| 女同性恋一区二区三区精品视频| 中文字幕乱在线伦视频中文字幕乱码在线| 亚洲精品欧美专业| 一区二区三区 日韩欧美| 久久九九97| 97资源制服丝袜| 亚洲成人精品在线一区| 夜夜嗷嗷一区二区| 国产超碰人人爽人人做| 久操免费观看| 二三四区精品| 人妻天堂综合网| 国产在线视频二区| 91中出在线| a在线视频免费观看| 亚洲第一页第二页激情| 美国三级日本三级久久99| 九九碰九九爱97| 国产精品原创巨作?v网站| 中出20p| 亚熟hd视频在线| 伊人97超碰| 国产精品三级视频网站| 尤物黄色在线观看网站| 精品人妻av区天天看片| 亚洲色棕合| 亚洲少妇激情视频| 中文字幕精品一区二区精品| 日本天天操| 国产精品99999| 欧美亚洲色的图| yazhousetuoumei| 色人久久| 亚洲无码?第一页| 国语精品对白| 热热色色综合| av午夜玫瑰| 五月天婷婷欧美三区| 久久久久亚洲Aⅴ无码| 久草精品国产99| 99在线无码精品秘 入口黑人| 久久系列| 97视频免费播放| 一本一道久久综合久久| 老司机午夜福利视频一区二区| 欧美一区二区传媒| 91扒丝袜综合在线| 青青草原综合久久大伊人精品| 五月天激情网站| 国产免费一区二区在线A片视频| 久久久免费的精品| 国产精品呦一区二区三区| 国产家庭乱伦性爱视频| 国产精品日韩在线一区| 人妻9117c| 日本中文字幕不卡视频| 国产福利电影| 久久久久久亚洲Av无码| 三级激情网站| 国产 亚洲 丝袜 制服| 青椒国产97在线熟女| 国产性久久久| 日韩色欲久久一二三四区| 九月丁香婷婷色| 欧美日韩香蕉| 成人性爱电影网| 久久久久人妻| 97超碰69| 五月天久久婷婷亚洲 | 中文高清一区二区的| 欧美日韩色图片| 9久久9综合| 啊啊啊啊啊好大好舒服想要| 九九九九欧美| 蜜臀网址在线| 日韩欧美亚洲自拍偷拍| 人人玩人人添人人澡免费| 久久毛卡| 99视频内射三四| 丝袜内射| 欧美国产操逼| 春色综合网| 国产无马在线| 日韩欧美国产高清视频| 九九这里只有精品| 欧美大香蕉97| 加勒比性爱成人在线| 综合色一区三区二区| 久久久久久亚洲Av无码精| 色官网色综合| 日本欧美韩国日产片片在线看免| 综合激情97 | 96国产精品| 沈阳熟女高潮对白视频| 美女写真| 色香色香欲天天天影视综合网| 性色中出| 好湿好紧视频| 欧美偷拍区| 996热| 日han少妇无码| 99精品综合久久久久五月天| 91麻豆天美| 午夜福利免费福利视频| 中文啪啪视频| 日韩青久久| 人人操人人爽人人操人人| 久久免费精品视频免一| 观看视频图片一区二区三区| asc国产精品| 国产中出内射一区二区| 蜜乳av首页| 久久国99999| 91美女视频在线观看| 岛国网址国产| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 91xingse| 欧美专区17页| 人人做天天爱| 又黄又爽在线观看视频| 亚洲大色鬼| 国产91会所女技师在线观看| 久久久无码国精品无码三区三区| 五十路人妻在线| 秋霞色色影院| 日日狠狠久久偷偷色综合免费| 亚洲综合夜色| 涩综合导航| 亚洲欧美在线观看2021 | 每日更新AV| 人妻熟女一区二区三区在线| 白丝一区| 婷婷五月天补不补| 后入精品| 日韩欧美字幕亚洲一区二区| 清清草影| 吖在线不卡一区二区国产剧情| 午夜精品久久久久久久男人的天堂| 亚洲丰满很很操| 26uuu欧美日韩| 97在线免费看视频| 九色精品视频导航1| 国产男女无套97| 超碰色综合| 婷婷丁香六月天| 免看60秒涩涩视频| 国产1769在线| 狠狠做深爱婷婷久久二区| 亚洲欧洲日韩天堂av| 日韩人妻资源在线看| 人妻天天爽夜夜爽2| 永久免费发布性爱网| 97欧美精品综合| 青青青国产手线观看视频2| 亚洲天堂电影精品一区| 亚洲欧美洲综合| 久久丁香五月婷婷| 天天综合网在线91| 久久精品无码不卡| 天美传媒婬乱在| 欧美人妻少妇| 亚洲综合网电影91| 亚洲人妻久久久| 亚洲色欲天天人妻无码系列专区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 亚洲s色图| 人人妻人人狠人人| 久久精品人妻一区二区三区| 牛牛aV| 久欲AV| 人人操AV| 成人开心网在线视频| 99色综合| 亚洲啪啪综合?v一区综合精品区| 96精品在线| 丁香五六月啪啪| 国产亚洲日本| 性爱精品一区| 人妻丝袜日本| 熟女人妻av在线资源,黄色的资源| 91操熟女| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 大但人体久久久久| 嫖老熟女A片一二三区| 天天摸天天操视频| 男人的天堂2019AV| 免费av在线播放二区| 精品一二三区四视频| 翔田千里av一区二区三区| 日韩精品三级| 中文字幕在线观看AV| 欧美αv.com| 999九九九九国产动| 3571色综合一区二区二区| 久久狠狠色噜噜狠狠狠狠97| 丝袜美女诱惑 91 视频| 日韩性爱高清免费视频| 精品人妻中文字幕高清| 日韩精品第3页| 午夜色婷婷| 人人操,人人插| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 人妻内射一区二区在线视频| 秋霞免费AV| 97超碰人妻| 日韩久久艹| 天天爽天天干| 成人97人人超碰人人| 超碰欧美97资源| oumeisetupian| 亚洲美女自拍偷拍视频| 草草草视频在线免费看| 男人的天堂在线| 日韩欧美亚洲国产日韩| 欧美色视频在线| 91综合在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 久久久国产成人一区二区三区在线| 水多多映视AV| 欧美大干日韩| 色女99一级片在线观看| 精品国产久久乱码| 欧美黑人猛交春色影视大全| 亚洲最大AV网| 中国熟女老妇仑乱一区二区三区| 久久精品女同亚洲女同13| 91N五十路| 激情专区综合| 国产 亚洲 丝袜 制服| 后入国产| 色亚洲欧美| 91高跟美女在线播放| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 人人看欧美性爱| 亚洲国产精品成人久久蜜臀| 大白逼三四级| 欧美一二在线| 大香蕉伊人亚洲| 一块操欧美| 欧美日韩国内不卡| 综合 欧美 亚洲 日本| 午夜爽爽爽| 日韩图色| 亚洲素人综合| 日本不卡码黄色| 九九在线视频| 色色色热| 操操啪| 无码乱人伦中文视频| 乱伦图一区| 韩国三级一线观看久| 国产在线播放成人免费| 后入式五六区| 伊人久久亚洲色欲综合网站 | 色偷综合| 加勒比AV天堂| yy少妇精品久久| 久久精品一区| 欧美亚洲一区二区久久久婷精品大包诱| 久久久久久久人妻| 五月婷婷大香蕉| www.av在线观看| 激情看片网站| 五月天婷婷色色| 日本精品成人无码| 99自拍视频在线观看| 日韩欧美中文| 国产av美女被艹的乱叫| 手机看片1025| 日本在线激情一区二区三区| 99精品久久久久久久婷婷蜜桃| 亚洲国产尤物yw在线观看| 亚欧视频在线| 欧美日韩日产免费网站看| 欧美一区二区福利在线| 国产女人和拘做爰视频 | 摸奶性爱视频网站在线免费播放| 中英熟女操女| 一区AV| 欧美亚洲色图另类国产| 天天谢天天干| 大香蕉免费乱伦视频| 中文字幕性感少妇av| 天天天天天干夜夜夜夜夜操| 91狠狠色丁香婷婷综合久久精品| 激情五月天婷婷| 极品粉嫩一区二区| 欧美中字二区| 超碰碰小说97| 欧洲精品一级二级精品综合视频综合 | 97二区四区| 中文字幕久久精品一区| 牛牛久久国产精品视频一二三| 欧美玖玖爱免费玖玖| 老鸭窝日丰县女人| 欧美 亚洲| 欧美日本成人一区二区| 中文AV制服乱伦| 久久精品国产亚洲AV高级北京| 午夜无码精品免费看性色| www99热| 有码色中文字幕在线观看| 人妻在线大香蕉| 深夜激情 | 91国产丝袜白虎| 亚洲日韩人妻中文字幕一区| 人妻一区二区三区视频| 天天干人妇| 97超碰国产精品| 97bbn| 校园春色亚洲| 久久久一区二区三区三州| 中文字幕日本久久| 久久久久久久极品香蕉视频| 久久久男人的天堂| 97色碰| 国产性爱在线视频一区二区| 欧亚在线视频| 北京专精特新企业招聘信息| 做爱福利视频一区二区| 黄色交缠性感爆操91国产精品免费一区二区三区| 97国产|免费| 亚洲av综合伊人久久| 草莓精品视频| 久久久久久久久久黄色网| 亚洲小说视频| 北约熟女超碰| 蜜桃精品一区二区三区ww| 玖玖资源视频一区二区三区| 亚洲本色精品一区二区久久| 免费看日本操逼视频| 香一区二区三区| 国语精品av| 韩国午夜理伦三级好看| 嗯嗯啊在线视频| 老熟妇一区二区三区| 日比av无码| 午夜精品久久久久久久99蜜桃一| 熟妇一区二区三区| 97网站在线观看| blacked精品一区国产| 亚州色站 日韩电影| 骚鸭AV| 大伊香蕉在线视频免费| 台湾肥佬网一区二区三区| 亚洲熟女综合一区二区| 欧美疯狂做爰xxxx| 欧美中文狠| 在线播放成人高清免费视频| 久久久爆乳翘臀一线天伦理视频| 综合九九| 中国一级特黄大片护士| 国产精品久久蜜乳av| 欧美福利视频啊啊啊啊| 欧美色偷拍| 亚洲精品国产拍免费91在线| 欧美一区二区观看在线| 亚洲性少妇| 亚州熟女乱伦| 亚洲欧美爆| 亚洲麻豆av一区二区| 国产精品电影| 啊啊啊水好多| 欧美视频中文字幕区| 超碰欧美在线欧美| 亚洲国产精品9999在线观看| 99热精品青草在线| 香蕉国产精品麻豆亚洲欧美日韩| 天天看综合网| 九九九九AV| 国产农村妇女一区二区| 天天拍夜夜| 蜜桃臀av在线观看| 日韩啪啪视频| 蜜色网色哟哟| 国产真实子伦对白| 男人下部插入女人下部| 国产 日韩,欧美 自拍| 黄色污污污污污污网站| 91啪啪| 密桃99999| 一区二区三区四区理论片| 亚洲精品视频二区| 东京热综合久久一区二区| 日本三级久| 人妻精品视频一区二区三区| 欧美精品另类人妖xxxx| 国产精品久久久吖| 欧美熟女妇同| 曰韩操B| 91色人| 狠狠色综合网| 91视频综合网| 久久久久9999妇女| 国产精品宅男免费| 日韩久草| 婷婷在线视频| 成人性爱免费播放| 99re95| aⅴ日韩成人电影av在线免费看av大全 | 亚洲欧美日韩综合在线尤物 | 人爽不卡视频| 青青草十区九区爱夜| 美国aaaaa一级黄片| 国产熟女自拍| 亚洲无套久久嗯嗯| 久久精品国产99精品亚洲蜜...| 久久日本熟女精品一区| 91麻豆va国产精品| 精品一级毛片在线观看| 蜜臀久久99精品久久久久免费观| 岛国大片在线观看网站入口| 亚洲色婷婷综合久久久久中文| 偷拍 精品另类 凸凹了四区| 人妻偷拍一区二区三区| 亚洲素人综合| 天天日老熟妇| 亚洲第2页| 日韩欧美加勒比| 欧美熟女妇同| 狠狠狠狠狠狠| 操逼www.| 成人一二三区| 成人精品一区二区三区| 99色视频| 亚洲无码超碰免费| 青青操日韩| 亚欧中文字幕在线视频| 色yeye成人免费视频| 日本不卡二区| 亚洲玖玖爱| 香蕉一区二区三区在线视频| 色综合网1| 99视频这有这里有精品| 九九超碰综合网| 综合日韩激情另类图片| 激情丁香婷婷| 欧美精品23| 亚欧美色| 2020中文字幕在线| 800zy一区二区| 久久综合婷婷| 国产精品色片一区二区| 婷婷国产精品一区二区| 日韩精品人妻中文字幕久久久| 五月天社区| 啪一啪免费视频| 欧美日韩1234| 日本ZZ高免费A级视频| 嗯嗯,好大,好爽,好骚| 91久久久久久久| 一级黄色牲爱A级片| 婷婷av在线中文字幕| 欧美97免费| 欧美在线色| 九九久久国产精品| 涩涩五月天| 久久精品中文字幕无码l| 久久久999国产精品| 亚欧精品久久久久久久久久久| 免费亚洲黄色视频在线观看 | 欧美在线色图| 天天爽天天操| 欧美黑人精品一区二区| 国产最新小视频在线播放下载| 婷婷久久五月综合激情| 久久亚洲日韩熟女精品| 热热色AV| 一区二区亚州激情久婷婷欧美| 9 9精品一区二区三区| 亚洲天堂久久| 婷婷丁香五月激情啪啪| 国产黑白丝在线| 成人一道本免费视频| 日韩大香蕉| 天天肏视频| 欧美操逼录像国产黄色国产| 亚欧美色图| 自拍第一页| 涩亚洲欧洲| 久久人体一区二区| 久久一区二区加油站| 91超碰在线播放| 五月天色电影| 激情欧美日韩女同久久| 欧美 牲| 口爆综合网| 爱爱动态120秒| 久久熟女人| 久久精品熟妇丰满人妻99| 97视频新免费| 大香蕉在线SuP| 亚洲色天堂九9| 大屁股熟女一区二区三区| 黄久久| 精品人妻一区二区三区四区| 视频在线中文字幕| 少妇精品久久久| 中文字幕欧美日本乱码一线二线| 久久精品综合| 亚洲91射| 色综合91好| 欧美亚洲自拍另类人妻| 欧美碰碰综合色| 99无码狠狠久久| 另类小说综合网| hd成人一区二区在线| 日韩午夜精品一区二区三区电影| 亚洲精品美女久久久久久久久| 九九成人视频| 九九激情网| 亚州成人a∨| 精品美女久久一二三| 妇女乱色二区| 啊啊啊啊好多水| 成年人网站在线免费观看| A 在线网址| 婷婷五月天久久久| 国模一区二区三区| 亚洲淫乱骚妇AV| 久久久精| 熟女熟妇一区二区三四区| 中文字幕在线免费观看2| 天天做日日做| 五月激情在线| 91美女视屏| 大香蕉在线SuP| 啊啊啊好想要| 欧美日韩精品一区二区三区高清| 国产第25页在线观看| 亚 欧 美 综合| 韩日精品福利视频一区不卡在线免| 91丨精品丨国产丨丝袜| 欧美亚洲首页| 三级特黄60分钟播放|