国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

給女朋友這樣講全排列、組合、子集問題,下次再也不鬧了

共 11050字,需瀏覽 23分鐘

 ·

2021-03-06 01:39

前言

Hello,大家好,long time no see!在刷題和面試過程中,我們經(jīng)常遇到一些排列組合類的問題,而全排列、組合、子集等問題更是非常經(jīng)典問題。本篇文章就帶你徹底搞懂全排列!

求全排列?

全排列即:n個(gè)元素取n個(gè)元素(所有元素)的所有排列組合情況。

求組合?

組合即:n個(gè)元素取m個(gè)元素的所有組合情況(非排列)。

求子集?

子集即:n個(gè)元素的所有子集(所有可能的組合情況)。

總的來說全排列數(shù)值個(gè)數(shù)是所有元素,不同的是排列順序;而組合是選取固定個(gè)數(shù)的組合情況(不看排列);子集是對組合拓展,所有可能的組合情況(同不考慮排列)。

當(dāng)然,這三種問題,有相似之處又略有所不同,我們接觸到的全排列可能更多,所以你可以把組合和子集問題認(rèn)為是全排列的拓展變形。且問題可能會遇到待處理字符是否有重復(fù)的情況。采取不同的策略去去重也是相當(dāng)關(guān)鍵和重要的!在各個(gè)問題的具體求解上方法可能不少,在全排列上最流行的就是鄰里互換法回溯法,而其他的組合和子集問題是經(jīng)典回溯問題。而本篇最重要和基礎(chǔ)的就是要掌握這兩種方法實(shí)現(xiàn)的無重復(fù)全排列,其他的都是基于這個(gè)進(jìn)行變換和拓展。

全排列問題

全排列,元素總數(shù)為最大,不同是排列的順序。

無重復(fù)序列的全排列

這個(gè)問題剛好在力扣46題是原題的,大家學(xué)完可以去a試試。

問題描述:

給定一個(gè)?沒有重復(fù)?數(shù)字的序列,返回其所有可能的全排列。

示例:

輸入:?[1,2,3]
輸出:
[
??[1,2,3
],
??[1,3,2],
??[2,1,3],
??[2,3,1],
??[3,1,2],
??[3,2,1]
]

回溯法實(shí)現(xiàn)無重復(fù)全排列

回溯算法用來解決搜索問題,而全排列剛好也是一種搜索問題,先回顧一下什么是回溯算法:

回溯算法實(shí)際上一個(gè)類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解,當(dāng)發(fā)現(xiàn)已不滿足求解條件時(shí),就“回溯”返回,嘗試別的路徑.

而全排列剛好可以使用試探的方法去枚舉所有中可能性。一個(gè)長度為n的序列或者集合。它的所有排列組合的可能性共有n!種。具體的試探策略如下:

  1. 從待選集合中選取第一個(gè)元素(共有n種情況),并標(biāo)記該元素已經(jīng)被使用不能再使用。

  2. 在步驟1的基礎(chǔ)上進(jìn)行遞歸到下一層,從剩余n-1個(gè)元素中按照1的方法找到一個(gè)元素并標(biāo)記,繼續(xù)向下遞歸。

  3. 當(dāng)所有元素被標(biāo)記后,順序收集被標(biāo)記的元素存儲到結(jié)果中,當(dāng)前層遞歸結(jié)束,回到上一層(同時(shí)將當(dāng)前層標(biāo)記的元素清除標(biāo)記)。這樣一直執(zhí)行到最后。

回溯的流程如果從偽代碼流程大致為這樣:

遞歸函數(shù):
??如果集合所有元素被標(biāo)記:
??????將臨時(shí)儲存添加到結(jié)果集中
??否則:
??????從集合中未標(biāo)記的元素中選取一個(gè)存儲到臨時(shí)集合中
??????標(biāo)記該元素被使用
??????下一層遞歸函數(shù)
??????(這層遞歸結(jié)束)標(biāo)記該元素未被使用

如果用序列?1 2 3 4來表示這么回溯的一個(gè)過程,可以用這張圖來顯示:

9911b0ba691d895db83f577edefb475c.webp回溯過程

用代碼來實(shí)現(xiàn)思路也是比較多的,需要一個(gè)List去存儲臨時(shí)結(jié)果是很有必要的,但是對于原集合我們標(biāo)記也有兩種處理思路,第一種是使用List存儲集合,使用過就移除然后遞歸下一層,遞歸完畢后再添加到原來位置。另一種思路就是使用固定數(shù)組存儲,使用過對應(yīng)位置使用一個(gè)boolean數(shù)組對應(yīng)位置標(biāo)記一下,遞歸結(jié)束后再還原。因?yàn)長ist頻繁查找插入刪除效率一般比較低,所以我們一般使用一個(gè)boolean數(shù)組去標(biāo)記該位置元素是否被使用。

具體實(shí)現(xiàn)的代碼為:

List<List<Integer>>?list;
public?List<List<Integer>>?permuteUnique(int[]?nums)?{
????list=new?ArrayList<List<Integer>>();//最終的結(jié)果
????List<Integer>?team=new?ArrayList<Integer>();//回溯過程收集元素
????boolean?jud[]=new?boolean[nums.length];//用來標(biāo)記
????dfs(jud,?nums,?team,?0);
????return?list;
}
private??void?dfs(boolean[]?jud,?int[]?nums,?List<Integer>?team,?int?index)?{
????int?len?=?nums.length;
????if?(index?==?len)//?停止
????{
????????list.add(new?ArrayList<Integer>(team));
????}?else
????????for?(int?i?=?0;?i?<?len;?i++)?{
????????????if?(jud[i])?//當(dāng)前數(shù)字被用過?當(dāng)前即不可用
????????????????continue;
????????????team.add(nums[i]);
????????????jud[i]=true;//標(biāo)記該元素被使用
????????????dfs(jud,?nums,?team,?index?+?1);
????????????jud[i]?=?false;//?還原
????????????team.remove(index);//將結(jié)果移除臨時(shí)集合
????????}
}

修改一下輸出的結(jié)果和上面思維導(dǎo)圖也是一致的:

06413103635974f9e0990d2fabedcb17.webp

鄰里互換法實(shí)現(xiàn)無重復(fù)全排列

回溯的測試是試探性填充,是對每個(gè)位置進(jìn)行單獨(dú)考慮賦值。而鄰里互換的方法雖然是也是遞歸實(shí)現(xiàn)的,但是他是一種基于交換的策略和思路。而理解起來也是非常簡單,鄰里互換的思路是從左向右進(jìn)行考慮。

因?yàn)樾蛄惺菦]有重復(fù)的,我們開始將數(shù)組分成兩個(gè)部分:暫時(shí)確定部分未確定部分。開始的時(shí)候均是未確定部分,我們需要妥善處理的就是未確定部分。在未確定部分的序列中,我們需要讓后面未確定的每一位都有機(jī)會處在未確定的首位,所以未確定部分的第一個(gè)元素就要和每一個(gè)依次進(jìn)行交換(包括自己),交換完成之后再向下進(jìn)行遞歸求解其他的可能性,求解完畢之后要交換回來(還原)再和后面的進(jìn)行交換。這樣當(dāng)遞歸進(jìn)行到最后一層的時(shí)候就將數(shù)組的值添加到結(jié)果集中。如果不理解可以參考下圖進(jìn)行理解:

20463a165e393f688eff1b37d01ad136.webp鄰里互換部分過程

實(shí)現(xiàn)代碼為:

class?Solution?{
?????public?List<List<Integer>>?permute(int[]?nums)?{
????????List<List<Integer>>list=new?ArrayList<List<Integer>>();
????????arrange(nums,0,nums.length-1,list);
????????return?list;
?????}

????private?void?arrange(int[]?nums,?int?start,?int?end,?List<List<Integer>>?list)?{
??????????if(start==end)//到最后一個(gè)?添加到結(jié)果中
??????????{
??????????????List<Integer>list2=new?ArrayList<Integer>();
??????????????for(int?a:nums)
??????????????{
??????????????????list2.add(a);
??????????????}
??????????????list.add(list2);
??????????}
??????????for(int?i=start;i<=end;i++)//未確定部分開始交換
??????????{
??????????????swap(nums,i,start);
??????????????arrange(nums,?start+1,?end,?list);
??????????????swap(nums,?i,?start);//還原
??????????}

????}
????private?void?swap(int[]?nums,?int?i,?int?j)?{
????????int?team=nums[i];
????????nums[i]=nums[j];
????????nums[j]=team;
????}
}

那么鄰里互換和回溯求解的全排列有什么區(qū)別呢?首先回溯法求得的全排列如果這個(gè)序列有序得到的結(jié)果是字典序的,因?yàn)槠洳呗允翘畛?,先小后大有序,而鄰里互換沒有這個(gè)特征。其次鄰里互換在這種情況下的效率要高于回溯算法的,雖然量級差不多但是回溯算法需要維護(hù)一個(gè)集合頻繁增刪等占用一定的資源。

有重復(fù)序列的全排列

有重復(fù)對應(yīng)的是力扣第47題?,題目描述為:

給定一個(gè)可包含重復(fù)數(shù)字的序列?nums?,按任意順序?返回所有不重復(fù)的全排列。

示例 1:

輸入:nums =?[1,1,2]
輸出:
[[1,1,2],
?[1,2,1],
?[2,1,1]]

示例 2:

輸入:nums =?[1,2,3]
輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

提示:

1 <= nums.length <= 8
-10 <= nums[i] <= 10

這個(gè)和上面不重復(fù)的全排列略有不同,這個(gè)輸入數(shù)組中可能包含重復(fù)的序列,我們怎么樣采取合適的策略去重復(fù)才是至關(guān)重要的。我們同樣針對回溯和鄰里互換兩種方法進(jìn)行分析。

回溯剪枝法
因?yàn)榛厮萃暾谋戎苯舆f歸慢,所以剛開始并沒有考慮使用回溯算法,但是這里用回溯剪枝相比遞歸鄰里互換方法更好一些,對于不使用哈希去重的方法,首先進(jìn)行排序預(yù)處理是沒有懸念的,而回溯法去重的關(guān)鍵就是避免相同的數(shù)字因?yàn)橄鄬Υ涡騿栴}造成重復(fù),所以在這里相同數(shù)字在使用上相對位置必須不變,而具體剪枝條的規(guī)則如下:

  • 先對序列進(jìn)行排序

  • 試探性將數(shù)據(jù)放到當(dāng)前位置

  • 如果當(dāng)前位置數(shù)字已經(jīng)被使用,那么不可使用

  • 如果當(dāng)前數(shù)字和前一個(gè)相等但是前一個(gè)沒有被使用,那么當(dāng)前不能使用,需要使用前一個(gè)數(shù)字。

d18ac8d24b418ac62b120140701757c5.webp回溯選取策略

思路很簡單,實(shí)現(xiàn)起來也很簡單:

List<List<Integer>>?list;
public?List<List<Integer>>?permuteUnique(int[]?nums)?{
????list=new?ArrayList<List<Integer>>();
????List<Integer>?team=new?ArrayList<Integer>();
????boolean?jud[]=new?boolean[nums.length];
????Arrays.sort(nums);
????dfs(jud,?nums,?team,?0);
????return?list;
}
private??void?dfs(boolean[]?jud,?int[]?nums,?List<Integer>?team,?int?index)?{
????//?TODO?Auto-generated?method?stub
????int?len?=?nums.length;
????if?(index?==?len)//?停止
????{
????????list.add(new?ArrayList<Integer>(team));
????}?else
????????for?(int?i?=?0;?i?<?len;?i++)?{
????????????if?(jud[i]||(i>0&&nums[i]==nums[i-1]&&!jud[i-1]))?//當(dāng)前數(shù)字被用過?或者前一個(gè)相等的還沒用,當(dāng)前即不可用
????????????????continue;
??????????????team.add(nums[i]);
??????????????jud[i]=true;
??????????????dfs(jud,?nums,?team,?index?+?1);
????????????jud[i]?=?false;//?還原
????????????team.remove(index);
????????}
}

鄰里互換法

我們在執(zhí)行遞歸全排列的時(shí)候,主要考的是要把重復(fù)的情況搞下去,鄰里互換又要怎么去重呢?

使用HashSet這種方式這里就不討論啦,我們在進(jìn)行交換swap的時(shí)候從前往后,前面的確定之后就不會在動(dòng),所以我們要慎重考慮和誰交換。比如1 1 2 3第一個(gè)數(shù)有三種情況而不是四種情況(兩個(gè)1 1 2 3為一個(gè)結(jié)果)

1 1 2 3 // 0 0位置交換
2 1 1 3 // 0 2位置交換
3 1 2 1 // 0 3位置交換

另外比如3 1 1序列,3和自己交換,和后面兩個(gè)1只能和其中一個(gè)進(jìn)行交換,我們這里可以約定和第一個(gè)出現(xiàn)的進(jìn)行交換,我們看一個(gè)圖解部分過程:

e43a5bc3598dc14b81433acc0d894c82.webp鄰里互換一個(gè)過程

所以,當(dāng)我們從一個(gè)index開始的時(shí)候要記住以下的規(guī)則:同一個(gè)數(shù)只交換一次(包括值等于自己的數(shù))。在判斷后面值是否出現(xiàn)的時(shí)候,你可以遍歷,也可以使用hashSet().當(dāng)然這種方法的痛點(diǎn)就是判斷后面出現(xiàn)的數(shù)字效率較低。所以在可能重復(fù)的情況這種方法效率一般般。

具體實(shí)現(xiàn)的代碼為:

public?List<List<Integer>>?permuteUnique(int[]?nums)?{
?????????List<List<Integer>>?list=new?ArrayList<List<Integer>>();
?????????arrange(nums,?0,?nums.length-1,?list);
?????????return?list;
?????}

private?void?arrange(int[]?nums,?int?start,?int?end,?List<List<Integer>>?list)?{
??????if(start==end)
??????{
??????????List<Integer>list2=new?ArrayList<Integer>();
??????????for(int?a:nums)
??????????{
??????????????list2.add(a);
??????????}
??????????list.add(list2);
??????}
??????Set<Integer>set=new?HashSet<Integer>();?????
??????for(int?i=start;i<=end;i++)
??????{
??????????if(set.contains(nums[i]))
??????????????continue;
?????????????set.add(nums[i]);?????????????
??????????swap(nums,i,start);
??????????arrange(nums,?start+1,?end,?list);
??????????swap(nums,?i,?start);
??????}?
}
private?void?swap(int[]?nums,?int?i,?int?j)?{
????int?team=nums[i];
????nums[i]=nums[j];
????nums[j]=team;
}

組合問題

組合問題可以認(rèn)為是全排列的變種,問題描述(力扣77題):

給定兩個(gè)整數(shù) n 和 k,返回 1 … n 中所有可能的 k 個(gè)數(shù)的組合。

示例:

輸入:?n?=?4,?k?=?2
輸出:
[
??[2,4
],
??[3,4],
??[2,3],
??[1,2],
??[1,3],
??[1,4],
]

分析:

這個(gè)問題經(jīng)典回溯問題。組合需要記住只看元素而不看元素的順序,比如a bb a是同一個(gè)組合。要避免這樣的重復(fù)是核心,而避免這樣的重復(fù),需要借助一個(gè)int類型保存當(dāng)前選擇元素的位置,下次只能遍歷選取下標(biāo)位置后面的數(shù)字,而k個(gè)數(shù),可以通過一個(gè)數(shù)字類型來記錄回溯到當(dāng)前層處理數(shù)字的個(gè)數(shù)來控制。

07a67042247a2cb5420082441e2a1619.webp全排列和組合的一些區(qū)別

具體實(shí)現(xiàn)也很容易,需要?jiǎng)?chuàng)建一個(gè)數(shù)組儲存對應(yīng)數(shù)字,用boolean數(shù)組判斷對應(yīng)位置數(shù)字是否使用,這里就不用List存儲數(shù)字了,最后通過判斷boolean數(shù)組將數(shù)值添加到結(jié)果中也是可行的。實(shí)現(xiàn)代碼為:

class?Solution?{?
????public?List<List<Integer>>?combine(int?n,?int?k)?{
????????List<List<Integer>>?valueList=new?ArrayList<List<Integer>>();//結(jié)果
????????int?num[]=new?int[n];//數(shù)組存儲1-n
????????boolean?jud[]=new?boolean[n];//用于判斷是否使用
????????for(int?i=0;i<n;i++)
????????{
????????????num[i]=i+1;
????????}

????????List<Integer>team=new?ArrayList<Integer>();
????????dfs(num,-1,k,valueList,jud,n);
????????return?valueList;
????}
????private?void?dfs(int[]?num,int?index,?int?count,List<List<Integer>>?valueList,boolean?jud[],int?n)?{
????????if(count==0)//k個(gè)元素滿
????????{
????????????List<Integer>list=new?ArrayList<Integer>();
????????????for(int?i=0;i<n;i++)
????????????{
????????????????if?(jud[i])?{
????????????????????list.add(i+1);
????????????????}
????????????}
????????????valueList.add(list);
????????}
????????else?{
????????????for(int?i=index+1;i<n;i++)//只能在index后遍歷?回溯向下
????????????{
????????????????jud[i]=true;
????????????????dfs(num,?i,?count-1,?valueList,jud,n);
????????????????jud[i]=false;//還原

????????????}
????????}???
????}
}

子集

子集問題和組合有些相似。這里講解數(shù)組中無重復(fù)和有重復(fù)的兩種情況。

無重復(fù)數(shù)組子集

問題描述(力扣78題):

給你一個(gè)整數(shù)數(shù)組 nums ,數(shù)組中的元素 互不相同 。返回該數(shù)組所有可能的子集(冪集)。

解集 不能 包含重復(fù)的子集。你可以按 任意順序 返回解集。

示例 1:

輸入:nums =?[1,2,3]
輸出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

輸入:nums =?[0]
輸出:[[],[0]]

提示:

1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同

子集和上面的組合有些相似,當(dāng)然我們不需要判斷有多少個(gè),只需要按照組合回溯的策略遞歸進(jìn)行到最后每進(jìn)行的一次遞歸函數(shù)都是一種情況都要加入到結(jié)果中(因?yàn)椴扇〉牟呗圆粫兄貜?fù)的情況)。

實(shí)現(xiàn)的代碼為:

class?Solution?{
???public?List<List<Integer>>?subsets(int[]?nums)?{
????????List<List<Integer>>?valueList=new?ArrayList<List<Integer>>();
????????boolean?jud[]=new?boolean[nums.length];
????????List<Integer>team=new?ArrayList<Integer>();
????????dfs(nums,-1,valueList,jud);
????????return?valueList;
????}
????private?void?dfs(int[]?num,int?index,List<List<Integer>>?valueList,boolean?jud[])?{
????????{//每進(jìn)行遞歸函數(shù)都要加入到結(jié)果中
????????????List<Integer>list=new?ArrayList<Integer>();
????????????for(int?i=0;i<num.length;i++)
????????????{
????????????????if?(jud[i])?{
????????????????????list.add(num[i]);
????????????????}
????????????}
????????????valueList.add(list);
????????}
????????{
????????????for(int?i=index+1;i<num.length;i++)
????????????{
????????????????jud[i]=true;
????????????????dfs(num,?i,?valueList,jud);
????????????????jud[i]=false;

????????????}
????????}
????}
}

有重復(fù)數(shù)組子集

題目描述(力扣90題):

給定一個(gè)可能包含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。

說明:解集不能包含重復(fù)的子集。

示例:

輸入:?[1,2,2]
輸出:
[
??[2
],
??[1],
??[1,2,2],
??[2,2],
??[1,2],
??[]
]

和上面無重復(fù)數(shù)組求子集不同的是這里面可能會出現(xiàn)重復(fù)的元素。我們需要在結(jié)果中過濾掉重復(fù)的元素。

首先,子集問題無疑是使用回溯法求得結(jié)果,首先分析如果序列沒有重復(fù)的情況,我們會借助一個(gè)boolean[]數(shù)組標(biāo)記使用過的元素和index表示當(dāng)前的下標(biāo),在進(jìn)行回溯的時(shí)候我們只向后進(jìn)行遞歸并且將枚舉到的那個(gè)元素boolean[index]置為true(回來的時(shí)候復(fù)原)。每次遞歸收集boolean[]數(shù)組中true的元素為其中一個(gè)子集。

1a9f88d513228cb77f3c9fd387f97142.webp在這里插入圖片描述


而有重復(fù)元素的處理上,和前面全排列的處理很相似,首先進(jìn)行排序,然后在進(jìn)行遞歸處理的時(shí)候遇到相同元素只允許從第一位連續(xù)使用而不允許跳著使用,所以在遞歸向下時(shí)候需要判斷是否滿足條件(第一個(gè)元素和前一個(gè)不同或和前一個(gè)同且前一個(gè)已使用),具體可以參考這張圖:

49c9d04947a82bcb394e50eb2f440437.webp

實(shí)現(xiàn)代碼為:

class?Solution?{
??public?List<List<Integer>>?subsetsWithDup(int[]?nums)?{
????Arrays.sort(nums);
????boolean?jud[]=new?boolean[nums.length];
????List<List<Integer>>?valueList=new?ArrayList<List<Integer>>();
????dfs(nums,-1,valueList,jud);
????return?valueList;
??}

????private?void?dfs(int[]?nums,?int?index,?List<List<Integer>>?valueList,?boolean[]?jud)???{
????????//?TODO?Auto-generated?method?stub
????????List<Integer>list=new?ArrayList<Integer>();
????????for(int?i=0;i<nums.length;i++)
????????{
????????????if?(jud[i])?{
???????????????list.add(nums[i]);
????????????}
????????}
????????valueList.add(list);
????????for(int?i=index+1;i<nums.length;i++)
????????{//第一個(gè)元素?或?當(dāng)前元素不和前面相同??或者相同且前面被使用了可以繼續(xù)進(jìn)行
????????????if((i==0)||(nums[i]!=nums[i-1])||(i>0&&jud[i-1]&&nums[i]==nums[i-1]))
????????????{
????????????????jud[i]=true;
????????????????dfs(nums,?i,?valueList,jud);
????????????????jud[i]=false;
????????????}
????????}
????}
}

結(jié)語

到這里,本篇的全排列、組合、子集問題就介紹到這里啦,尤其要注意問題處理去重的思路和策略。當(dāng)然和這類似的問題也是很多啦,多刷一刷就可以很好的掌握,后面敬請期待!

推薦閱讀

「干貨總結(jié)」程序員必知必會的十大排序算法
?花5分鐘看這篇之前,你才發(fā)現(xiàn)你不懂RESTful
?我和藍(lán)橋杯的那兩年
?面試官會的位運(yùn)算奇淫技巧
歡迎大家加我微信好友,有需要的可以拉你進(jìn)刷題交流群,2021更上一層樓!


1c2a72d86310343bd1a65fbb701a7a7a.webp

點(diǎn)個(gè)在看你最好看



瀏覽 54
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 你懂的视频在线| 大香蕉久操网| 精品无码一| 少妇大战28厘米黑人| 性爱福利社| 亚欧成人网站| 欧美日韩精品一区二区三区视频播放 | 中文字幕亚洲精品| 亚洲专区免费| H片在线免费观看| 色婷婷综合激情| 求欧美精品网址| 天堂网婷婷| 大肉大捧一进一出免费阅读| 亚洲国产av电影| 伊人在线成人视频| 狠狠干| 中文无码在线播放| 99er热精品视频| 丰滿人妻一区二区三区| 一区二区三区四区视频在线| 国产卡一卡二| 在线观看视频无码| 日韩一级性爱视频| 中文字幕日韩有码| 亚洲欧美日韩免费| 久久香蕉电影| 婷婷五月在线播放| 国产91白浆四溢| 尻屄视频| 超碰亚洲| www操逼| 亚洲第一av| 伊人久久免费视频| 91探花视频在线观看| 狠狠色婷婷777| 精品一区二区三区免费| 嫩草入口| 男人视频网| A级免费视频| 亚洲AV无码乱码A片无码沈樵| 大香蕉伊人手机在线| 亚洲AV色香蕉一区二区三区| 欧美激情视频在线| 九九草在线视频| 大鸡巴午夜爽视频电影| 国产色婷婷| 日韩精品成人| 国产精品一区在线观看| 日韩电影免费在线观看中文字幕| 欧美色图15P| 98国产精品| 婷婷AV在线| 黄片视频在线免费观看| 中文字幕一区二区三区免费2023| 亚欧洲精品在线视频免费观看| 欧美成人精品欧美一级| 99视频| 免费三级毛片| 日韩无码视频网站| 亚洲A片V一区二区三区| 国产一区二区三区在线观看免费视频免费视频免费视频 | 丁香六月综合激情| 久久私拍| 亚洲av自拍| 国产精品AV在线观看| 久久久久久免费毛片精品| 99热综合在线| 操夜夜操| 激情六月丁香| 操人视频在线观看| 青青色在线观看| 日本在线视频一区二区| 宗合久久| 水蜜桃视频免费观看| 激情小视频| www.91在线| 少妇综合网| 亚洲无码视频网站| 91超碰在线免费观看| 91绿帽人妻-ThePorn| 亚洲无码视频一区| 国产免费小视频| 7799精品视频| 欧美A片在线观看| 中文字幕亚洲有码| 国产成人高清| 无码三级| 粉嫩一区| 国产精品午夜在线观看| 福利视频免费观看| 日韩av无码电影| 亚洲av小说| 色婷久久| 日韩AV高清无码| 色欲五月天| 亚洲中文字幕在| 国产成人免费做爰视频| 大肉大捧一出免费观看| 囯产精品久久久久久久久| 北条麻妃人妻中文无码| 久久精品国产视频| 国产精品97| 91成人免费视频| 法国《少女日记》电影| 国产成人精品视频免费看| 欧美黄色a片| 亚州操B| 91视频入口| 无码一区二区黑人猛烈视频网站| 国产精品精品精品| 久激情内射婷内射蜜桃欧美一级| 三级无码中文| 色九| 人妻AV在线| 黄色片网站| 免费一级黄色片| 欧美伊人网在线观看| 久久99精品国产.久久久久| 亚洲情在线| 1024香蕉视频| 三级片无码在线| 91蝌蚪视频在线播放| 韩国一区二区三区| 91视频网站在线| 99在线精品视频免费观看20| AV一级片| 中文人妻第9页| 91视频在线| 无套内射在线免费观看| 亚洲视频在线观看中文字幕| 福利视频在线| 色天堂在线观看视频| 亚洲激情片| 六月丁香网| www.伊人| 国产黄色电影| 久久理论电影| 国产女人十八水真多| 亚洲狼人综合网| 91大香蕉视频| 日韩成人无码人妻| 日韩成人综合| 色色欧美视频| 欧美怕怕| www.久久精品视频| 俺也去网站| 苍井空一区二区三区| 高清无码电影| 国产拍拍拍| а√天堂中文最新版8| 久久午夜成人电影| 欧美日韩国产91| 国产高潮白浆喷| 中文字幕日本在线| 国产精品一区二区三| 精品日韩| 蜜芽人妻在线| 熟女内射| 激情内射网站| 天天操天天干天天射| 逼特逼在线观看| 欧美AAAAAA视频| 日本AⅤ中文字幕| 岛国AV免费在线| 精品一区二区三区视频| 一级a一级a免费观看视频Al明星 | 大香蕉精品在线| 好吊视频一区二区三区红桃视频you | 日韩一区在线播放| 无码AV电影| 欧美A片视频| 黄色视频一区二区| 在线中文字幕第一页| 多啪啪免费视频| 日本熟妇高潮BBwBBwBBw| 色播婷婷五月天| 丁香五月天堂网| 亚洲精品一线| 操小嫩逼视频| 久草热视频| 一级A片一毛片大全| 芳芳的骚逼| 亚洲AV永久无码国产精品久久 | 99久热在线精品| 123好逼网| 高清av无码| 亚洲在线| 亚洲精品色婷婷| 亚洲观看黄色网| 国产无套内射在线观看| 日韩视频免费观看| 国产麻豆精品ThePorn| 免费看黄色片视频| 亚洲成人无码在线播放| 成人自拍网| 日韩无码人妻久久一区二区三区| 色噜噜网站| 亚洲精品午夜| 北条麻妃无码视频在线观看| 国产亚洲久一区二区| 伊人偷拍视频| 成人A√| 亚洲性爱无码| 色哥网在线一区| 在线观看黄色小电影| 91精品国产一区二区| 久久这里只有精品99| 日韩欧美一级片| 久久国产偷拍| 波多野结衣一级| 国产精品三级在线观看| 操逼视频在线观看| 日韩xxx视频| 欧美一级欧美三级在线观看| 女人一级A片色黄情免费| 婷婷丁香五月激情一区综合网| 无码高清视频在线观看| 永久免费黄色视频| 欧美手机在线视频| 亚洲无码三级片在线观看| 日韩免费高清无码视频| 国产免费a片| 国产成人秘免费观看一区二区三区| 国产g蝌蚪| 黄色网页在线| 日韩精品成人在线| 国产激情视频| 欧美黄色一级网站| 在线中文字幕AV| 久草福利在线| 人人射人人摸| 亚洲熟女av中文字幕| 伊人久久大| 久久无码成人| 日本三级片网址| 久久国产精品久久| VA电影| 日韩久久婷婷| 亚洲三级视频在线观看| 男女日日批黄色三级| 中文人妻无码| 搡bbb| 婷婷色综合视频二区| 91高潮久久久久久久| 国产三级在线观看视频| 成人视频在线免费观看| 强行征服邻居人妻HD高清日本| 久久影院av| 中文字幕丰满熟妇人妻| 激情欧美| 国产一级AA片| 日韩性爱区| 亚洲系列| 天天夜夜久久| 大香蕉网伊| 久草黄色电影在线观看| 久久久黄色电影| 91高潮| 国产在线观看欧美| 一个人看的视频www| 在线永久看片免费的视频| 免费成人在线网站| 免费无码一级A片大黄在线观看| 成人自拍网| 91视频福利网| 亚洲精品乱码久久久久久| 中文字幕三级片| 欧美日韩人妻高清中文| 高清无码波多野结衣| 国产欧美一区在线看| 一级二级三级毛片| 亚洲AV男人天堂| 99九九99九九九99九他書對 | 最新免费毛片| 天天射天天操天天干| h无码| 国产日韩欧美成人| 色婷婷在线无码精品秘人口传媒| 日韩经典视频在线播放| 婷婷五月天丁香在线| 国产精品av在线| 在线观看视频日韩| 国产午夜成人免费看片无遮挡| 免费a视频| 国产一精品一aⅴ一免费| 色爽av| 亚洲天媒在线播放| 色哟哟无码精品一区二区三区| 婷婷丁香五月激情| 少妇搡BBBB搡BBB搡毛片| 五月天婷婷丁香网| 91免费观看视频| 一区二区国产视频| 免费看18禁| 男女啪网| 日本有码在线| 77777色婷婷| 久久av一区二区三区观看| 人人搞人人摸| 大地8免费高清视频观看大全| 国产美女一级真毛片酒店| 大香蕉人妻| 麻豆国产91| 97人人草| 欧美18禁| 国产日韩欧美综合在线| 国产一级a毛一级a毛片视频黑人| 午夜成人中文字幕| 在线不卡视频| 性色在线| 青娱乐99| 国产一区在线观看视频| 农村少妇久久久久久久| 亚洲a级毛片| 三级av无码| 亚洲综合免费观看高清完整版在线| 中文字幕av免费观看| 婷婷日韩| 日本黄色直播| 特级444WWW大胆高清| 日本有码中文字幕| 人妻少妇无码视频| 9l蝌蚪PORNY中文| 亚洲制服在线观看| 天天插天天| www四虎| 亚洲国产精品成人va在线观看| yw在线播放| 97人妻| 国产女人18毛片水真多成人如厕 | 午夜视频无码| 毛多水多丰满女人A片| 欧美黄色免费| 精品视频免费| 最新中文字幕在线播放| 国产男女无套免费视频| 国产麻豆电影在线观看| 又大又粗又爽| 91大神免费在线观看| 国产无码AV在线| 蜜臀AⅤ在线| 99久久久精品| 色人阁人妻中文字幕| 黄色免费观看网站| 色999在线播放视频| 五月天乱伦小说| 欧美三级长视频| 欧美艹逼视频| 日韩人妻无码一区二区三区七区 | 青娱乐亚洲领先| 亚州无码精品| 欧美天堂在线| 91免费网站在线观看| 在线观看中文字幕av| 成人丁香五月| 久久人人操| 3d动漫精品一区二区三区在线观看 | 操逼精品| 久久国产毛片| 大色欧美综合| 欧美口爆视频| WWW.豆花视频精品| 人妻无码高清| 蜜桃成人久久| 中文字幕人妻丰满熟妇| 欧美日韩中文视频| H片在线免费观看| 台湾精品一区二区三区| 丁香五月欧美| 九一亚洲精品| 91爱爱| 欧美搡BBBB搡BBB| 日韩人妻午夜| 操欧美美女| 亚洲无码高清电影| 国产成人精品视频免费| 国产伦精品一级A片视频夜夜| 免费看欧美成人A片无码| 黄色在线播放| 五月天黄色视频| 美女操逼图| 国产精品可站18| 91成人在线免费视频| 日本午夜影院| 欧美另类激情| 国产最新av| 天天色天天日| 男人日女人视频| 六月婷婷五月天| 极品人妻疯狂3p超刺激| 亚洲第一成网站| 在线无码高清| 精品久久一区二区三区四区| 夜夜骚| 国产成人视频免费观看| 超碰在线观看免费版| 五月丁香影院| 免费日韩无码| 一级黄色视频日逼片| 日本高清无码视频| 欧美久久婷婷| 人人看人人摸人人| 精品国产天线2024| 米奇7777狠狠狠狠| 天天综合网久久综合网| 国产永久在线| 一区二区不卡视频| yw在线播放| 无码人妻丰满熟妇区毛片蜜桃麻豆| 久久99久久99久久99人受| 久久秘成人久久无码| 日韩一二区| 色色播| 无码视屏| 九九综合久久| 久久久久久9| 超碰自拍私拍二区三区区| 无码日韩视频| 神马午夜激情| 日本一级婬片A片AAA毛多多| 亚洲色射| 亚洲乱论| 无码精品一区二区三区同学聚会| 欧美日韩在线视频一区| 国产黄色AV片| 人人搞人人摸| 伊人大香蕉精品| 日韩在线| 亚洲无码精品一区二区| 亚洲免费观看高清完| 99偷拍| 久操视频网站| 天天色天天撸| 超碰中文字幕| 精品久久电影| 亚洲成人在线视频免费观看 | 亚洲午夜无码精品专区| 国产精品网站在线观看| 大鸡巴草逼| 五月影院| 怡春院av| 日韩情色| 北条麻妃在线播放一区| 青青草免费在线| 2025中文字幕在线| 插逼视频国产| 91久久婷婷| 中文字幕高清无码在线| 亚洲avwww| 东北嫖老熟女一区二区视频网站| 久久久久性| 能看的操逼网站| 成人黄色毛片| 京熱大亂交无碼大亂交| 91精品国产乱码久久| 天天干夜夜爽| 国内免费AV| 国产在线观看无码| 嫩草av在线| 九九99精品| 草草浮力院| 欧美在线观看一区二区| 一区二线视频| 久久一| 久操网在线视频| 91视频免费看| 西西444www无码精品| 亚洲成人电影无码| 特级西西444WWW高清大视频| 操碰视频| 久草视频大香蕉| 成人H动漫精品一区二区无码| 国产海角视频| 黄色成人网站免费在线观看| 成人免费黄色视频网站| 西西www444无码大胆| 操逼视频在线免费观看| 亚洲av图片| 亚洲第一成网站| 激情人妻在线| 骚逼AV| 一区二区在线看| 欧美日韩免费观看视频| 亚洲aaa| 亚洲成人综合在线| 成人一区视频| www人人操| 亚洲欧美成人在线| AV在线免费观看网址| 成人免费乱码大片a毛片蜜芽| 啪啪人妻| 国产欧美熟妇另类久久久| 欧美高潮喷水| 少妇中文字幕| 国产成人三级在线| www.超碰| 在线黄色小视频| 日韩有码中文字幕在线观看| 婷婷在线观看免费| 中文字幕在线看| 国产精品人妻AⅤ在线看| 日韩免费小视频| 亚洲欧美视频| 黄色无無| EEUSS| 91热热| 日本老女人视频| 日韩无码不卡电影| 成人性生活视频| 无码91| 免费十无码| 最新亚洲无码在线观看| 成人AV免费观看| 足浴小少妇-88AX| 欧美色色网站| 中文字幕A片| 在线视频观看一区| 黃色A片一級二級三級免費久久久| 操逼一区二区| 无码AV中文字幕| 69国产精品无码免费| 免费AV网站在线| 阿宾MD0165麻豆沈娜娜| 亚洲性爱视频在线观看| 久久久久久久无码| 亚洲精品国产AV婷婷| 精品吃奶一区二区三区视频| 日韩三级AV在线观看| 91国产爽黄| 日韩熟女视频| 日日搔av一区二区三区| 日韩操逼AV| 国产和日韩中文字幕| 影音先锋男人站| 一级欧美一级日韩片| 国产三级片无码| av一卡二卡| 北条麻妃精品青青久久价格| 日韩A片| 大鸡巴久久| 男人亚洲天堂| 亚洲精品国产成人AV在线| 国产伦精品一区二区三区妓女下载| 日本久久高清| 日日撸夜夜撸| 久久亚洲AV| 亚洲美女视频在线观看| 我爱大香蕉| 国产黄在线| 俺也去com| 欧美性爱精品一区| 成人黄片免费看| 超碰99热| 中文字幕av第一页| 最近日本中文字幕中文翻译歌词| 人人色人人草| 两根茎一起进去好爽A片在线观看| 爱爱打炮影院| 国产免费AV在线| 热99re69精品8在线播放| 夜夜夜叫天天天做| 日本黄色免费在线观看| 大香蕉综合闲人| 北条麻妃一区二区三区在线| 国产熟妇码视频黑料| 狠狠狠狠操| 亚洲日韩影院| 一本久久精品一区二区| 大香蕉黄色片| 欧美一级黃色A片免费看蜜桃熟了| 久久久久久久久久久亚洲| 骚妇一区| 欧美成人在线观看| 国产A片免费看| 超碰人人操人人爱| 日韩黄色电影网址| 一区二区三区免费在线观看| 三级网址在线| 91视频在线观看免费大全| 婷婷丁香五月花| 亚洲中文自拍| 日本三级片视频不卡| 成人自拍偷拍视频| 日本一级黃色大片看免费| 7777影视电视剧在线观看官网 | 高清无码免费不卡| 精品无码一区二区三区在线| V片免费看| 欧美黄片区| 欧美美女日逼视频| 99热在线观看| 国产三级网站| 成人做爰A片AAA毛真人| av中文字幕网| 看a网站| 国产办公室丝袜人妖| 欧美精品成人免费| 91亚洲免费视频| ThePorn精品无码| 嘿咻嘿咻动态图| 久久综合加勒比| 秋霞无码一区二区三区| 一区二区三区四区视频| 黄色在线观看免费| 亚洲三级免费| 高清免费无码视频| 国产高清免费| 九九精品国产| 欧美在线免费观看| 影音先锋av资源网站| 亚洲国产精品二二三三区| 九九韩剧网最新电视剧免费观看| 在线观看18s| 水蜜桃一区二区三区| 欧一美一婬一伦一区二区三区自慰国| 成人午夜小电影| 麻豆视频在线免费观看| 午夜操一操一级| 中文字幕福利电影| 精品九九九| 亚洲一区二区在线| 日韩AV免费在线观看| 超碰免费在线观看| 精品AV| 国产1区2区| 中文字幕无码Av在线看| 青青操逼视频| 免费AA片| 无码一区二区视频| 激情黄色视频| 操屄视频在线| 熟妇人妻丰满久久久久久久无码| 狠狠色婷婷777| 日本大香蕉伊人| 美女操逼图| 亚洲电影AV| yw在线播放| 国产毛片777777| 欧美日韩中文在线| 中文字幕35页| 中文字幕区| 国产精品高潮呻吟久久| 在线网址你懂的| 国产亚洲欧洲| 国产成人精品麻豆| 国产学生妹| 亚洲精品suv视频| 99在线看| 成人午夜小视频| 91抽插| 免费日韩视频| 北条麻妃无码一区二区| 综合色婷婷一区二区亚洲欧美国产| 91干干干| 91精品婷婷国产综合久久| 激情五月在线| 国产高清无码一区二区| 免费欧美性爱视频| 日本黄色视频网址| 久热网| 亚洲天堂一区二区三区| 欧美一级片在线| 午夜黄色福利| 欧美色图15P| 亚洲午夜福利在线观看| 久久性| 日韩中文字幕熟妇人妻| 夜夜骚AV一二三区无码| 日韩视频在线播放| 日韩美女免费性爱视频| 健身房被教练3p喷水了| 91在线无码精品秘网站| 91免费在线视频观看| 亚洲欧美日韩不卡| 麻豆911精一区二区| 黄色视频A片| 无码AA| 7x7x7x人成免费观学生视频 | 99九九久久| 午夜高清无码视频| 波多野成人无码精品69| 壹屌探花| 国产成人精品AV在线观| 久久精品亚洲| 久久亚洲日韩天天做日日做综合亚洲| 操逼视频观看免费| 成人无码欧美大片免费看| 大香蕉啪啪啪啪| 亚洲Av无码午夜国产精品色软件| 精品三级在线观看| 啊啊啊啊啊在线观看| 日本黄色视频免费| 噜噜噜色| 91秦先生在线播放| 六月婷婷久久| 国产va在线观看| 国产内射在线观看| 亚洲天堂无码在线| 亚洲福利在线观看| 国产精品伦理| 中国人妻HDbute熟睡| 日韩一区二区在线看在线看 | 北条麻妃人妻中文字幕91影视| 日韩AV一级片| 蜜桃av色偷偷av老熟女| 99re久久| 大雞巴疯狂浓精合集| 成人抽插视频| 亚洲免费观看高清视频| 91成人三级| www.久久精品视频| 精品亚洲一区二区三区四区五区| 久久国产欧美| 久久久精品亚洲| 岛国AV免费看| 亚洲日韩中文字幕| 狼友视频一国产| 丁香婷婷久久久综合精品国产| 大香蕉尹人在线视频| xxx一区二区| 天堂av在线免费观看| 亚洲色爽| 欧美亚洲在线| 欧美日韩精品在线| 国产综合自拍| 青青娱乐亚洲无| 天天日bb| 免费黄色成人| 四虎黄色影院| caopro| AV无码网站| 西西4444WWW大胆无视频| 国产激情欧洲在线观看一区二区三区| 影视先锋久久| 人人摸人人操人人看| 91人妻人人澡人人添人人爽| 五月天激情小说网| 国产又爽又黄在线看| 香蕉毛片| 天天日天天干天天操| 99精品视频北条麻妃国产版| 大香蕉中文视频| 日韩在线第—页| 国产精品久久久久精| 少妇综合网| 五月天操逼| 午夜成人福利视频在线观看| 日本性欧美| 17c白丝喷水自慰| 天天摸天天看| 九九九成人网| 亚洲无码一区二区三区四区| 欧美色色色网| jizz在线视频| 东北操逼视频| 亚洲免费观看高清完整版在线| 夜夜骑天天操| 国产成人免费| 亚洲国产精品欧美久久| 啪啪网站免费看| 黄色视频网站在线看| 国产亚洲一区二区三区| 操逼视频国产| 底流量AV电影在线| 操15p| 伊人黄色视频| JlZZJLZZ亚洲美女18| 乌克兰毛片| 日本免费黄色| 北条麻妃无码av| www免费视频| 黄片在线免费播放| 无码精品人妻一区二区三刘亦菲| 亚洲天堂在线视频| 色综合五月婷婷| 欧美h在线观看| 噜噜在线| 亚洲无码视频免费看| 色999在线播放视频| 亚洲高清无码一区二区| 69成人天堂无码免费| 无码人妻精品一区二区三区99仓 | 无码人妻精品一区二区蜜桃漫画| 欧美丰满老熟妇XXXXX性| 国产一级AAAAA片免费| 欧美成人精品a| yw尤物在线| 豆花视频免费观看| 成人在线精品| 亚洲一区欧美二区gay| 欧美日韩成人网| 久久公开视频| 国产成人亚洲综合A∨婷婷| 中文字幕+乱码+中文乱码91| 逼特逼视频网站| 曰曰操| 先锋成人在线| 国内操逼| 黄网在线观看视频| 人人看人人插| 成年人黄色电影| 青青伊人网| 五月婷婷日韩| 亚洲熟妇AV日韩熟妇在线| 9l农村站街老熟女| 午夜激情视频在线观看| 久久青青婷婷| 久久福利视频导航| 大香蕉中文网| 亚洲免费在线观看视频| 国产操穴| 美女一级A片| 刘玥无码| 成人免费无遮挡无码黄漫视频| 亚洲wwwwww| 亚洲三级av| 亚洲AV无码久久精品色无码蜜桃 | 免费观看黄色成人网站| 成人免费黄色视频网站| 2018天天干天天操| 91网站18| 先锋成人电影| 中文无码第一页| 广东BBW搡BBBB搡| 婷婷激情中文字幕| 一级黄色片网站| 一本大道DVD中文字幕| 99热这里有精品| 91精品少妇| 一本色道久久综合无码人妻软件| 香蕉婷婷| 亚洲国产精品成人网站| 美国黄色A片| 久久久久伊人| 日本操骚逼| 亚洲综合一区二区三区| 成人国产在线无码AV免费| 69av在线播放| 男人的天堂视频在线观看| 国产精品无码在线播放| 国产精品国产成人国产三级| 国产欧美日韩综合| 天天舔天天射| 各种妇女撒尿mm毛免费网站| 日韩城人网站| www.蜜桃av| 国产精品揄拍500视频| 国产精品无码在线观看| 亚洲成人动漫在线| 国内久久婷婷| 亚洲黄色电影网站| 日本精品在线观看视频| 香蕉视频成人在线| 成人无码区免费AV毛片| 亚洲天堂在线观看网站| 婷婷狠狠爱| 国产AV一区二区三区四区| 日本少妇久久| 好吊顶亚洲AV大香蕉色色| 三级AV在线| 99久久婷婷国产综合精品青牛牛| 国产成人综合在线| 中文字幕网址在线| 成人做爰100部片视频| 日韩专区在线观看| 国产精品无码专区| 国产精品麻豆视频| 大骚逼影院| 婷婷色av| 九月婷婷综合| 久久久久久久大香蕉| 无码日逼| 蜜臀网在线观看| 欧美性爱福利视频| 日韩无码高清视频| 国产视频无码在线| 先锋影音AV在线| 最新免费毛片| 可以免费看的黄色| 久久精品小视频| 强开小嫩苞毛片一二三区| 超碰人人操在线| 大香蕉国产在线| 在线免费观看黄色网址| 夜夜操网站| 短发半推半就AV| 最近日本中文字幕中文翻译歌词| 欧美黄片免费观看| 三级av网站| 日本一区二区三区在线播放 | 亚洲欧美网站| 波多野结衣高清无码| 美女操b| 欧美囗交荫蒂AAAA| 日韩在线欧美在线| H片免费在线观看| 日韩精品人妻一区二区| 日韩一级免费观看| 99热青青草|