精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java實現(xiàn)通用組合算法

開發(fā) 后端 算法
Java是一種簡單的,面向?qū)ο蟮模植际降模忉屝偷模寻踩模Y(jié)構中立的,可移植的,性能優(yōu)異、多線程的動態(tài)語言。通用組合算法是經(jīng)典數(shù)據(jù)結(jié)構算法。本文介紹的是通用組合算法用Java來實現(xiàn),一起來看。

Java實現(xiàn)通用組合算法,存在一個類似{31311133,33113330}這樣的集合,經(jīng)過8取5組合,其他位置用非字母數(shù)字字符替代,比如使用*號,得到類似{3***1133,***13330,... ...}這樣的集合;

現(xiàn)在有這樣的需求:

存在一個類似{31311133,33113330}這樣的集合,經(jīng)過8取5組合,其他位置用非字母數(shù)字字符替代,比如使用*號,得到類似{3***1133,***13330,... ...}這樣的集合;

還要求對于{3***1133,***13330}這樣的集合,再次經(jīng)過5取3組合,其他位置用非字母數(shù)字字符替代,比如使用*號,得到類似{*****133,*****330,3***1*3*,... ...}這樣的集合。

對于這樣的要求,實現(xiàn)的思路如下:

首先,主要思想是基于信息編碼原理,通過掃描字符串,將10組合變?yōu)?1組合。

其次,對于每個數(shù)字字符串,設置一個單線程,在單線程類中設置一個List用來存放待處理數(shù)字字符串(可能含有*號,或者不含有)中每個數(shù)字的(而非*號)索引位置值;

再次,設置BitSet來標志每個位置是否被*號替換得到新的組合字符串。

***,在掃描原始待處理數(shù)字字符串的過程中,根據(jù)設置的字符列表List中索引,來操作BitSet,對于每一個BitSet得到一個新的組合。

使用Java語言實現(xiàn)如下:

 

  1. package org.shirdrn;    
  2. import java.util.ArrayList;    
  3. import java.util.BitSet;    
  4. import java.util.Collection;    
  5. import java.util.Collections;    
  6. import java.util.HashSet;    
  7. import java.util.Iterator;    
  8. import java.util.List;   
  9. /**  
  10. * 通用組合拆分類(基于單線程)  
  11. * 可以完成兩種功能:  
  12. * ***,可以將完全數(shù)字串拆分成為含有*號的字符串。  
  13. * 例如:輸入集合{31311133,33113330},Splitter類會遍歷該集合,對每個字符串,創(chuàng)建一個SplitterThread  
  14. * 線程來處理,如果是2取1組合,即starCount=8-2=6,經(jīng)過線程處理得到類似******33,*****1*3等結(jié)果  
  15. * 第二,根據(jù)從帶有*號的字符串經(jīng)過拆分過濾后得到的字符串集合,對其中每一個字符串進行組合  
  16. * 例如:輸入集合5取1組合字符串集合{3***1133,***113330}  
  17. * CommonSplitter類會遍歷該集合,對每個帶有*號的字符串,創(chuàng)建一個SplitterThread  
  18. * 線程來處理,如果是2串1組合,即starCount=8-3-2=3,經(jīng)過線程處理得到類似******33,*****1*3等結(jié)果  
  19. * @author 時延軍  
  20. */ 
  21. public class CommonSplitter {  
  22. private int starCount;  
  23. private boolean duplicate;  
  24. private Collection filteredContainer;  
  25. public Collection getFilteredContainer() {  
  26. return filteredContainer;  
  27. }  
  28. /**  
  29. * 構造一個Spilitter實例  
  30. * @param container 輸入的待處理字符串集合  
  31. * @param starCount 如果對于長度為N的數(shù)字字符串,進行M組合(即N取M),則starCount=N-M  
  32. * @param duplicate 是否去重  
  33. */ 
  34. public CommonSplitter(Collection container, int starCount, boolean duplicate) {  
  35. this.duplicate = duplicate;  
  36. this.starCount = starCount;  
  37. if(this.duplicate) { // 根據(jù)指定是否去重的選擇,選擇創(chuàng)建容器  
  38. filteredContainer = Collections.synchronizedSet(new HashSet());  
  39. }  
  40. else {  
  41. filteredContainer = Collections.synchronizedList(new ArrayList());  
  42. }  
  43. Iterator it = container.iterator();  
  44. while(it.hasNext()) {  
  45. new Thread(new SplitterThread(it.next().trim())).start();  
  46. }  
  47. try {  
  48. Thread.sleep(50);  
  49. catch (InterruptedException e) {  
  50. e.printStackTrace();  
  51. }  
  52. }  
  53. /**  
  54. * 對一個指定的N場比賽的長度為N的單式投注字符串進行組合  
  55. * 輸入單式投注注字符串string,例如31311133,組合得到類似******33,*****1*3,... ...結(jié)果的集合  
  56. *  
  57. * @author 時延軍  
  58. */ 
  59. class SplitterThread implements Runnable {  
  60. private char[] charArray;  
  61. private int len; // 數(shù)字字符的個數(shù)  
  62. List occupyIndexList = new ArrayList(); // 統(tǒng)計字符串中沒有帶*的位置的索引  
  63. private List container = new ArrayList();  
  64. private BitSet startBitSet; // 比特集合起始狀態(tài)  
  65. private BitSet endBitSet; // 比特集合終止狀態(tài),用來控制循環(huán)  
  66. public SplitterThread(String string) {  
  67. this.charArray = string.toCharArray();  
  68. this.len = string.replace("*""").length();  
  69. this.startBitSet = new BitSet(len);  
  70. this.endBitSet = new BitSet(len);  
  71. // 初始化startBitSet,左側(cè)占滿*符號  
  72. int count = 0//  
  73. for (int i=0; i  
  74. if(charArray[i] != '*') {  
  75. if(count < starCount) {  
  76. this.startBitSet.set(i, true);  
  77. count++;  
  78. }  
  79. occupyIndexList.add(i);  
  80. }  
  81. }  
  82. // 初始化endBit,右側(cè)占滿*符號  
  83. count =0;  
  84. for (int i = string.length()-1; i > 0; i--) {  
  85. if(charArray[i] != '*') {  
  86. if(count < starCount) {  
  87. this.endBitSet.set(i, true);  
  88. count++;  
  89. }  
  90. ccupyIndexList.add(i);  
  91. }  
  92. }  
  93. // 根據(jù)起始startBitSet,構造帶*的組合字符串并加入容器  
  94. char[] charArrayClone = this.charArray.clone();  
  95. for (int i=0; i  
  96. if (this.startBitSet.get(i)) {  
  97. charArrayClone[i] = '*';  
  98. }  
  99. }  
  100. this.container.add(new String(charArrayClone));  
  101. }  
  102. public void run() {  
  103. this.split();  
  104. synchronized(filteredContainer) {  
  105. filteredContainer.addAll(this.container);  
  106. }}  
  107. public void split() {  
  108. while(!this.startBitSet.equals(this.endBitSet)) {  
  109. int zeroCount = 0// 統(tǒng)計遇到10后,左邊0的個數(shù)  
  110. int oneCount = 0// 統(tǒng)計遇到10后,左邊1的個數(shù)  
  111. int pos = 0// 記錄當前遇到10的索引位置  
  112. char[] charArrayClone = this.charArray.clone();  
  113. // 遍歷startBitSet來確定10出現(xiàn)的位置  
  114. for (int i=0; i  
  115. if (!this.startBitSet.get(this.occupyIndexList.get(i))) {  
  116. zeroCount++;  
  117. }  
  118. if (this.startBitSet.get(this.occupyIndexList.get(i))  
  119. && !this.startBitSet.get(this.occupyIndexList.get(i+1))) {  
  120. pos = i;  
  121. oneCount = i - zeroCount;  
  122. // 將10變?yōu)?1  
  123. this.startBitSet.set(this.occupyIndexList.get(i), false);  
  124. this.startBitSet.set(this.occupyIndexList.get(i+1), true);  
  125. break;  
  126. }  
  127. }  
  128. // 將遇到10后,左側(cè)的1全部移動到最左側(cè)  
  129. int count = Math.min(zeroCount, oneCount);  
  130. int startIndex = this.occupyIndexList.get(0);  
  131. int endIndex = 0;  
  132. if(pos>1 && count>0) {  
  133. pos--;  
  134. endIndex = this.occupyIndexList.get(pos);  
  135. for (int i=0; i  
  136. this.startBitSet.set(startIndex, true);  
  137. this.startBitSet.set(endIndex, false);  
  138. startIndex = this.occupyIndexList.get(i+1);  
  139. pos--;  
  140. if(pos>0) {  
  141. endIndex = this.occupyIndexList.get(pos);  
  142. }  
  143. }}  
  144. // 將遇到1的位置用*替換  
  145. for (int i=0; i  
  146. if (this.startBitSet.get(this.occupyIndexList.get(i))) {  
  147. charArrayClone[this.occupyIndexList.get(i)] = '*';  
  148. }  
  149. }  
  150. this.container.add(new String(charArrayClone));  
  151. }  
  152. }}} 

 

#p#

測試用例如下所示:

 

  1. package org.shirdrn;  
  2. import java.util.ArrayList;  
  3. import java.util.Collection;  
  4. import junit.framework.TestCase;  
  5. import org.shirdrn.util.GoodTools;  
  6. public class TestCommonSplitter extends TestCase {  
  7. private CommonSplitter splitter;  
  8. public void setSplitter(Collection container, int starCount, boolean duplicate) {  
  9. this.splitter = new CommonSplitter(container, starCount, duplicate);  
  10. }  
  11. public void testSplliter() {  
  12. Collection container = new ArrayList();  
  13. container.add("1*10**");  
  14. int starCount = 2;  
  15. boolean duplicate = true;  
  16. this.setSplitter(container, starCount, duplicate);  
  17. System.out.println(this.splitter.getFilteredContainer());  
  18. }  
  19. public void testSplliter3() {  
  20. Collection container = new ArrayList();  
  21. container.add("1*10*1300*");  
  22. int starCount = 3;  
  23. boolean duplicate = true;  
  24. this.setSplitter(container, starCount, duplicate);  
  25. System.out.println(this.splitter.getFilteredContainer());  
  26. assertEquals(35this.splitter.getFilteredContainer().size());  
  27. }  
  28. public void testNoStar() {  
  29. Collection container = new ArrayList();  
  30. container.add("3110330");  
  31. int starCount = 3;  
  32. boolean duplicate = true;  
  33. this.setSplitter(container, starCount, duplicate);  
  34. System.out.println(this.splitter.getFilteredContainer());  
  35. assertEquals(35this.splitter.getFilteredContainer().size());  
  36. }  
  37. public void testSplitter_8_310() {  
  38. // 8 場:310  
  39. String multiSeq = "310,310,310,310,310,310,310,310";  
  40. Collection container = GoodTools.getNSingleList(multiSeq);  
  41. assertEquals(6561, container.size());  
  42. int starCount = 4;  
  43. boolean duplicate = false;  
  44. this.setSplitter(container, starCount, duplicate);  
  45. assertEquals(459270this.splitter.getFilteredContainer().size());  
  46. }  

 

上述測試耗時大約2s左右。

上述算法實現(xiàn)主要是針對兩種條件進行實現(xiàn)的,即:

***個是完全數(shù)字字符串 ——> 帶有*號的組合數(shù)字字符串;

第二個帶有*號的組合數(shù)字字符串 ——> 在該基礎上繼續(xù)組合得到帶有*號的組合數(shù)字字符串。

如果使用上述算法實現(xiàn)處理***個條件,由于使用了列表List來記錄索引,使執(zhí)行速度略微低一點,比之于前面實現(xiàn)的不使用List列表來處理。

【編輯推薦】

  1. 何時創(chuàng)建Java對象實例
  2. 學習java編程的八大優(yōu)勢
  3. Java多線程程序設計詳細解析
  4. 開發(fā)者最容易犯的13個JavaScript錯誤
責任編輯:于鐵 來源: 幫考網(wǎng)
相關推薦

2011-04-20 11:22:51

Java

2017-02-13 17:17:48

Android標題欄控件

2021-01-30 11:10:51

算法回溯組合

2010-05-17 09:34:46

LINQAjax

2011-12-16 10:45:12

java

2021-06-22 09:44:56

鴻蒙HarmonyOS應用

2012-03-27 11:08:23

Java

2009-10-10 09:27:42

Java泛型通用方法

2009-12-23 09:04:41

LINQ通用分頁

2014-04-23 16:54:51

神舟通用

2009-04-02 10:37:52

通用基類SQLLINQ

2015-07-29 10:31:16

Java緩存算法

2017-02-09 16:16:24

Java負載均衡算法

2022-09-09 15:01:37

物聯(lián)網(wǎng)AIoT人工智能

2021-04-12 18:44:47

編程語言合子

2009-07-01 14:40:14

2025-09-04 02:00:00

策略責任鏈簽章

2012-06-27 15:33:30

Java排序算法

2012-03-07 10:34:44

Java

2021-03-04 17:55:27

算法Raft分布式
點贊
收藏

51CTO技術棧公眾號

狠狠色综合色区| 欧美一级黄色网| 成年人看片网站| 国产伦久视频在线观看| 久久久三级国产网站| 国产在线拍偷自揄拍精品| 久久精品视频8| 欧美色女视频| 亚洲成人1234| xx欧美撒尿嘘撒尿xx| 日本在线视频中文有码| 国产日产欧美一区| 成人欧美一区二区| 亚洲精品一区二区二区| 激情视频一区| 日韩中文在线视频| 欧美精品欧美极品欧美激情| 亚洲精品三区| 色综合久久99| 久久人人爽人人爽人人av| 成人影院免费观看| 9久草视频在线视频精品| 成人www视频在线观看| 激情五月色婷婷| 亚洲综合色网| 伊人av综合网| 3d动漫精品啪啪一区二区下载| 国产aa精品| 欧美亚洲高清一区二区三区不卡| www.好吊操| 中文字幕有码在线观看| 日本一区二区三区国色天香 | 欧美黑人经典片免费观看| 欧美黄色激情| 国产精品视频一二三| 久久国产精品亚洲va麻豆| 性欧美一区二区三区| 毛片av中文字幕一区二区| 国产成人精彩在线视频九色| 久久久久噜噜噜亚洲熟女综合| 久久中文字幕av| 伊人伊成久久人综合网站| 五月天综合视频| 岳的好大精品一区二区三区| 亚洲第一天堂av| avtt中文字幕| 亚洲天堂av资源在线观看| 日韩一区二区三区视频在线观看| 日韩爱爱小视频| 国产一区二区主播在线| 色综合色综合色综合| 亚洲午夜无码av毛片久久| 交100部在线观看| 精品美女久久久久久免费| 亚洲 欧美 日韩 国产综合 在线| av丝袜在线| 午夜精品久久久久影视| 黄色一级视频在线播放| 日韩脚交footjobhd| 精品久久久久久久久久ntr影视| 欧洲精品一区二区三区久久| av女在线播放| 一本一本大道香蕉久在线精品| 欧美成人黑人猛交| 97精品国产综合久久久动漫日韩 | 久久久福利影院| 精品伦一区二区三区| 天天看片中文字幕| 小小影院久久| 久久香蕉国产线看观看网| 精品一区在线观看视频| 狠狠综合久久av一区二区老牛| 久久久久亚洲精品国产 | 色噜噜狠狠色综合欧洲selulu| 成年人免费在线播放| 成人影院大全| 欧美日韩国产三级| 无码人妻少妇色欲av一区二区| youjizz欧美| 亚洲毛片一区二区| 91动漫免费网站| 中文字幕一区二区精品区| 久久久女女女女999久久| 手机在线看片1024| 麻豆91在线播放免费| 亚洲在线观看视频网站| 亚洲av成人精品毛片| 国产精品污网站| 好吊色视频988gao在线观看| 僵尸再翻生在线观看| 欧美网站大全在线观看| 午夜诱惑痒痒网| 久久婷婷国产| 中文字幕一区二区精品| 久热这里只有精品在线| 日韩中文字幕91| 99re在线播放| 9色在线视频网站| 亚洲一区免费视频| 激情内射人妻1区2区3区 | 蜜桃传媒视频麻豆一区| 拍真实国产伦偷精品| 亚洲成人在线观看视频| 亚洲精品视频导航| 日韩成人视屏| 最近2019免费中文字幕视频三| 国产一级特黄a高潮片| 美腿丝袜在线亚洲一区| 国精产品一区二区| 免费在线观看黄| 色综合天天综合网天天狠天天| 国产探花在线观看视频| 精品视频99| 国外成人性视频| 国产视频在线免费观看| 久久日一线二线三线suv| 国产激情片在线观看| 黄色精品视频| 亚洲欧美制服第一页| 久久精品国产亚洲AV无码男同 | 91传媒在线免费观看| 欧美日本韩国一区二区| 亚洲小说欧美激情另类| 午夜一区二区视频| 欧美色图一区| 欧洲亚洲妇女av| 人人妻人人澡人人爽精品日本| 成人免费一区二区三区视频 | 免费久久久久久| 精品欧美一区二区三区在线观看| 亚洲精品黄网在线观看| 久久99久久98精品免观看软件| 精品一区二区三区香蕉蜜桃 | 国产精品xvideos88| 国产日韩精品在线| av免费在线一区二区三区| 欧美性xxxxhd| v8888av| 国产日韩欧美| 美女被啪啪一区二区| a级片免费在线观看| 日韩视频免费观看高清完整版 | 日韩**一区毛片| 免费成人av网站| 亚洲啊v在线| 精品中文字幕久久久久久| xxxx.国产| 91视视频在线观看入口直接观看www | 欧美性极品xxxx做受| 国产精品九九视频| 99这里有精品| 久久精品一二三区| 自拍一区在线观看| 亚洲老司机av| 无码aⅴ精品一区二区三区| 2014亚洲片线观看视频免费| 日本丰满少妇xxxx| 日本妇女一区| 国产成人精品在线观看| 北岛玲一区二区三区| 欧美日韩极品在线观看一区| 日韩精品一区二区亚洲av性色| 国产剧情一区二区三区| 免费看欧美一级片| 欧美挤奶吃奶水xxxxx| 热99在线视频| 日本中文字幕在线观看| 欧美一区国产二区| 国产精品suv一区二区69| 久久久综合网站| 777视频在线| 欧美日韩亚洲一区在线观看| 国产一区不卡在线观看| 桃色一区二区| 欧美成人亚洲成人| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 天天综合色天天综合色h| 强伦人妻一区二区三区| 久久精品国产成人一区二区三区| www国产免费| 在线日韩一区| 亚洲自拍偷拍视频| 黄色aa久久| 少妇久久久久久| 人妻va精品va欧美va| 在线国产电影不卡| 青青操国产视频| 久久久.com| 免费高清视频在线观看| 久久天天综合| av中文字幕av| 国产区精品区| 国产精品久久久久久久小唯西川| 黄色综合网址| 欧美丰满少妇xxxxx| 免费在线性爱视频| 日韩精品一区二区在线观看| 黄色片网站在线免费观看| 中文字幕中文字幕在线一区| 日韩av无码一区二区三区不卡| 蜜臀av在线播放一区二区三区| 欧美一级免费播放| 欧美电影免费观看高清| 鲁丝一区二区三区免费| 色播一区二区| 国产免费成人av| 成人勉费视频| 国产69精品久久久久99| 麻豆视频在线观看免费网站| 日韩成人中文字幕| 性生交大片免费看女人按摩| 欧美亚洲免费在线一区| 日韩欧美中文字幕一区二区| 亚洲三级小视频| аⅴ天堂中文在线网| 97久久超碰精品国产| 日本中文字幕在线不卡| 麻豆91精品视频| 日韩av一二三四| 日韩图片一区| 久草视频这里只有精品| 亚洲啊v在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 波多野结衣欧美| 91啪国产在线| 自拍偷拍亚洲| 国产一区红桃视频| 电影在线观看一区二区| 欧洲美女7788成人免费视频| 国产资源在线观看入口av| 久久久亚洲欧洲日产国码aⅴ| а√天堂在线官网| yellow中文字幕久久| jizz视频在线观看| 亚洲欧美色图片| 欧美成熟毛茸茸| 日韩麻豆第一页| 欧美日韩国产中文字幕在线| 日韩精品视频免费在线观看| 天天综合天天综合| 亚洲国产精品yw在线观看| 成人毛片视频免费看| 日韩欧美的一区二区| 国产xxxx孕妇| 欧美刺激午夜性久久久久久久| av加勒比在线| 日韩欧美成人午夜| 不卡的日韩av| 精品乱人伦一区二区三区| 亚洲精品久久久久久动漫器材一区 | 日本久久一级片| 亚洲精品720p| 欧美大片aaa| 中文字幕亚洲欧美| 日本不卡不卡| 欧美老妇交乱视频| 男女免费观看在线爽爽爽视频| 欧美第一淫aaasss性| 黄视频在线免费看| 26uuu久久噜噜噜噜| 亚洲播播91| 国产精品午夜视频| 久久久久久爱| 国产伦精品一区二区三区高清| 欧美交a欧美精品喷水| 日韩一本精品| 亚州av乱码久久精品蜜桃| 国产资源第一页| 亚洲精品视频啊美女在线直播| 99热在线这里只有精品| 日韩av在线发布| 欧美日韩理论片| 成人av在线网| 波多野在线播放| 亚洲视频香蕉人妖| 国产乡下妇女做爰毛片| 欧美日韩激情美女| 亚洲天堂自拍偷拍| 精品奇米国产一区二区三区| 欧洲天堂在线观看| 久久精品亚洲精品| 超碰资源在线| 国产精品网站视频| 国产精品网址| 亚洲国产婷婷香蕉久久久久久99| 欧美黄色一级视频| www.亚洲天堂网| 国产一区在线不卡| 国产精品无码一区二区三区免费 | 91丨porny丨户外露出| 91麻豆精品久久毛片一级| 亚洲最大的成人av| 7799精品视频天天看| 日韩一区二区三| 青青草免费观看免费视频在线| xx视频.9999.com| 在线亚洲人成| 国产成人精品日本亚洲11| 精品国内自产拍在线观看视频| 丁香婷婷综合激情| 美女在线视频一区| 特级西西人体wwwww| 又紧又大又爽精品一区二区| 国产情侣呻吟对白高潮| 精品处破学生在线二十三| 日本视频在线播放| 欧美一级视频在线观看| 久久视频免费| 亚洲一卡二卡三卡| 久久国产99| 免费看黄色片的网站| 亚洲视频每日更新| 波多野结衣av无码| 亚洲精品第一页| 四虎影视国产在线视频| 国产日韩精品视频| 精品国产成人| 97av视频在线观看| 成人永久免费视频| 国产探花在线播放| 69堂精品视频| 免费a级人成a大片在线观看| 国产91在线播放| 亚洲精品推荐| 欧美日韩亚洲一| 成人高清视频在线| 久久成人国产精品入口| 欧美精品色综合| 自拍视频在线| 国产精品普通话| 精品成人影院| 美女一区二区三区视频| 久久久一区二区三区捆绑**| 精品91久久久| 亚洲精品一区二区三区99| 国产羞羞视频在线播放| 91亚洲精华国产精华| 91成人精品视频| 午夜av中文字幕| 亚洲激情五月婷婷| www.成人精品| 欧美国产日韩一区二区| 亚洲精品a区| 日韩黄色片在线| 大桥未久av一区二区三区中文| 久久9999久久免费精品国产| 日韩免费性生活视频播放| 女囚岛在线观看| 国产精品区二区三区日本| 在线 亚洲欧美在线综合一区| 韩国黄色一级片| 精品成人在线视频| 你懂的好爽在线观看| 国产精品久久久久久久久久久新郎 | 国产福利一区二区三区| 久久国产在线观看| 精品福利视频一区二区三区| 高清毛片在线观看| 免费久久99精品国产自| 日韩激情av在线| 国产jizz18女人高潮| 91麻豆精品国产自产在线观看一区| 好吊日视频在线观看| 成人在线观看91| 午夜宅男久久久| 91麻豆精品国产91久久综合| 欧美日韩国产片| 日本一级理论片在线大全| 国产一区精品视频| 日韩经典一区二区| 日韩欧美国产成人精品免费| 亚洲精品一区二区三区四区高清| 在线天堂新版最新版在线8| 亚洲精品无人区| 国产精品一区二区91| 免费观看一区二区三区毛片| 国产一区二区三区视频| 国产999精品在线观看| 18岁网站在线观看| 国产精品久久久久毛片软件| 亚洲乱码在线观看| 日韩美女免费线视频| 亚洲成人一区| 中文字幕国产综合| 91精选在线观看| 久久电影tv| 成人短视频在线观看免费| 91论坛在线播放| av男人天堂av| 日本精品视频在线播放| 亚洲欧美综合久久久| 短视频在线观看| 日韩一区二区三区免费观看| 345成人影院| 青青在线视频免费观看| 久久久久久久久久久久久久久99 | 亚洲国产视频二区| 久久久久国产精品熟女影院| 亚洲综合视频网| 999在线视频|