<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 編程開發 > C#編程 >
      • C#教程之用C#開發的一個通用的地鐵換乘查詢工具

      • 2019-01-20 21:11 來源:未知

      日常生活中,上班下班坐地鐵已經是常事,每當我想去某一個遠一點的地方,如果有地鐵首選就是地鐵,因為方便嘛!每次坐地鐵,我們都是憑肉眼去得出我們心中最佳的換乘方案,但是,如果對于線路較少的城市來說,這個方法是最快的,但是如果對于線路較多的城市,例如北京或者上海,十幾條線路交叉穿梭,我們可能看到都暈了,怎么坐才是時間最短路程最短的,我們要算出來不是不可以但是很麻煩,我們也可以想一想,百度地圖的地鐵換乘算法是怎么實現的,于是,閑著沒事,我就想寫一個通用的地鐵換乘查詢程序,想用計算機運算得出科學一點的換乘方案供自己參考,假設先不考慮站點間的距離差異,我們以乘坐站點數最少為最優方案,依照這個條件去編碼實現查找的算法,其實也沒用上什么高大上的算法,因為也不會哈哈,話不多說,先上效果圖:

      3.png

      有對應城市的線路圖(支持鼠標滾輪放大縮小):

      2.png

      站點智能提示:

      5.png

      項目結構圖:

      7.png

      我的開發思路:

      1、采用xml存儲站點數據,如下:

      6.png

      2、代碼中使用集合初始化線路數據

      復制代碼
       1 /// <summary>
       2         /// 初始化地鐵線路數據
       3         /// </summary>
       4         /// <param name="city">城市</param>
       5         public static void InitSubwayLine(CityEnum city)
       6         {
       7             if (AllSubwayLines != null && AllSubwayLines.Any() && _currentCity == city) return;
       8             _currentCity = city;
       9             var xmlName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "xml/" + city.ToString() + ".xml");
      10             _doc = XDocument.Load(xmlName);
      11             AllSubwayLines = _doc.Root.Elements().Select(x =>
      12             {
      13                 var line = new SubwayLine
      14                 {
      15                     No = x.Attribute("No").Value,
      16                     Name = x.Attribute("Name").Value,
      17                     IsRound = x.Attribute("IsRound") == null ? false : bool.Parse(x.Attribute("IsRound").Value),
      18                     Stations = x.Elements().Select((y, i) => new Station
      19                     {
      20                         Index = i,
      21                         Name = y.Attribute("Name").Value,
      22                         LineNo = x.Attribute("No").Value,
      23                         CanTransfer = y.Attribute("CanTransfer") == null ? false : bool.Parse(y.Attribute("CanTransfer").Value),
      24                         TransferNo = y.Attribute("TransferNo") == null ? null : y.Attribute("TransferNo").Value
      25                     }).ToList()
      26                 };
      27                 var translines = line.GetTransStations().Select(z => z.TransferNo.Split(',')).ToList();
      28                 foreach (var transline in translines)
      29                 {
      30                     foreach (var li in transline)
      31                     {
      32                         line.TransferLines.Add(li);
      33                     }
      34                 }
      35                 line.TransferLines = line.TransferLines.Distinct().ToList();
      36                 return line;
      37             }).ToList();
      38         }
      復制代碼

      3、分多種情況進行處理,核心代碼(代碼有點長,我也在想方法濃縮代碼,還望各位看官耐心(┬_┬)):

      復制代碼
        1         /// <summary>
        2         /// 獲取地鐵乘車信息
        3         /// </summary>
        4         /// <param name="depStation">出發站</param>
        5         /// <param name="destStation">到達站</param>
        6         /// <param name="city">所在城市</param>
        7         /// <returns>返回各種換乘方案</returns>
        8         public static List<QueryResult> GetRideSubwayInfo(string depStation, string destStation, CityEnum city)
        9         {
       10             InitSubwayLine(city);
       11             if (string.IsNullOrWhiteSpace(depStation) || string.IsNullOrWhiteSpace(destStation)
       12                 || !AllSubwayLines.Exists(x => x.Stations.Exists(y => y.Name.Equals(depStation)))
       13                 || !AllSubwayLines.Exists(x => x.Stations.Exists(y => y.Name.Equals(destStation))))
       14                 return null;//出發站或到達站在線路上不存在!
       15 
       16             //各種換乘提示
       17             //同一條線路
       18             var msg_oneline = "在{0}【{1}】上車,經過{2}站到達目的站【{3}】。\r\n具體線路為:\r\n(出發){4}(到達)\r\n總搭乘站點數:{5}\r\n";
       19             //換乘1次
       20             var msg_transOnce = "在{0}【{1}】上車,經過{2}站在【{3}】下車,換乘{4},經過{5}站到達目的站【{6}】。\r\n具體線路為:\r\n(出發){7}(此處換乘{4})-->{8}(到達)\r\n總搭乘站點數:{9}\r\n";
       21             //換乘2次
       22             var msg_transTwice = "在{0}【{1}】上車,經過{2}站在【{3}】下車,換乘{4},經過{5}站在【{6}】下車,換乘{7},經過{8}站到達目的站【{9}】。\r\n具體線路為:\r\n(出發){10}(此處換乘{4})-->{11}(此處換乘{7})-->{12}(到達)\r\n總搭乘站點數:{13}\r\n";
       23             //換乘3次
       24             var msg_transThreetimes = "在{0}【{1}】上車,經過{2}站在【{3}】下車,換乘{4},經過{5}站在【{6}】下車,換乘{7},經過{8}站在【{9}】下車,換乘{10},經過{11}站到達目的站【{12}】。"
       25                 + "\r\n具體線路為:\r\n(出發){13}(此處換乘{4})-->{14}(此處換乘{7})-->{15}(此處換乘{10})-->{16}(到達)\r\n總搭乘站點數:{17}\r\n";
       26             //換乘4次
       27             var msg_transFourtimes = "在{0}【{1}】上車,經過{2}站在【{3}】下車,換乘{4},經過{5}站在【{6}】下車,換乘{7},經過{8}站在【{9}】下車,換乘{10},經過{11}站在【{12}】下車,換乘{13},經過{14}站到達目的站【{15}】。"
       28                 + "\r\n具體線路為:\r\n(出發){16}(此處換乘{4})-->{17}(此處換乘{7})-->{18}(此處換乘{10})-->{19}(此處換乘{13})-->{20}(到達)\r\n總搭乘站點數:{21}\r\n";
       29 
       30             //保存各種換乘方案
       31             var result = new List<QueryResult>();
       32             //第一步:先查找始發站和到達站在哪一條線路
       33             var afterDepLines = GetAcrossLines(depStation);
       34             var afterDestLines = GetAcrossLines(destStation);
       35             //根據同一條線和不同線路展開分析
       36             if (IsSameLine(depStation, destStation))
       37             {
       38                 #region 同一條線路
       39                 var commLines = afterDepLines.Where(x => afterDestLines.Select(y => y.No).Contains(x.No)).ToList();
       40                 //判斷線路是否相同,相同直接計算站點距離
       41                 var depIndex = GetIndexOnLine(depStation, commLines.First());
       42                 var destIndex = GetIndexOnLine(destStation, commLines.First());
       43                 var crossStations = commLines.First().Stations.Between(depIndex, destIndex).Select(x => x.Name).ToList();
       44                 var range = crossStations.Count - 1;
       45                 if (depIndex > destIndex) crossStations.Reverse();
       46                 var rs = msg_oneline.FormatTo(commLines.First().ToString(), depStation, range, destStation,
       47                          crossStations.ToJoinString(), range);
       48                 result.Add(new QueryResult() { Description = rs, Range = range });
       49                 #endregion
       50             }
       51             else
       52             {
       53                 #region 不同線路
       54                 if (!IsTransferStation(depStation) && !IsTransferStation(destStation))//如果始發站和終點站都不是換乘站,則表示始發站和到達站都是只有一條線路通過
       55                 {
       56                     if (afterDepLines.First().IsIntersect(afterDestLines.First()))
       57                     {
       58                         #region 如果兩條線路交叉,一定有換乘站點
       59                         var clist = GetAcrossStations(afterDepLines.First(), afterDestLines.First()).Select(x => x.Name).ToList();
       60                         var i = GetIndexOnLine(depStation, afterDepLines.First());
       61                         var j = GetIndexOnLine(clist.First(), afterDepLines.First());
       62                         var k = GetIndexOnLine(destStation, afterDestLines.First());
       63                         var l = GetIndexOnLine(clist.First(), afterDestLines.First());
       64                         var coss1 = afterDepLines.First().Stations.Between(i, j).Select(x => x.Name).ToList();
       65                         var coss2 = afterDestLines.First().Stations.Between(k, l).Select(x => x.Name).ToList();
       66                         if (i > j) coss1.Reverse();
       67                         if (k < l) coss2.Reverse();
       68                         var rang1 = coss1.Count - 1;
       69                         var rang2 = coss2.Count - 1;
       70                         var h = rang1 + rang2; //站點數
       71                         var rs = msg_transOnce.FormatTo(afterDepLines.First().ToString(), depStation, rang1, clist.First(),
       72                             afterDestLines.First().ToString(), rang2, destStation,
       73                             coss1.ToJoinString(), coss2.Where(x => x != clist.First()).ToJoinString(), h);
       74                         result.Add(new QueryResult()
       75                         {
       76                             Description = rs,
       77                             Range = h,
       78                             TransferStations = new List<string>() { clist.First() },
       79                             TransferTimes = 1
       80                         });
       81                         #endregion
       82                     }
       83                     else
       84                     {
       85                         #region 不交叉,需要通過第三條線路換乘,即多次換乘
       86                         var depSta = GetStation(depStation);
       87                         var destSta = GetStation(destStation);
       88                         //找出兩條線路的可換乘站點,找出可換乘相同線路的站點
       89                         var trans1 = afterDepLines.First().GetTransStations();
       90                         var trans2 = afterDestLines.First().GetTransStations();
       91                         var trans3 = new List<Station>();
       92                         var trans4 = new List<Station>();
       93                         var expets = trans1.Join(trans2, x => x.TransferNo, y => y.TransferNo, (x, y) =>
       94                         {
       95                             trans3.Add(x);
       96                             trans4.Add(y);
       97                             return x.Name + "---" + y.Name;
       98                         }).ToList();
       99                         if (expets.Any())
      100                         {
      101                             #region 兩次換乘
      102                             //trans3.Count和trans4.Count必定相等
      103                             //計算最短距離,列出所有換乘方案
      104                             for (var i = 0; i < trans3.Count; i++)
      105                             {
      106                                 var tranLine = GetLine(trans3[i].TransferNo);
      107                                 //獲取這兩個站點在此線路的索引                   
      108                                 var ix1 = depSta.Index;
      109                                 var ix2 = destSta.Index;
      110                                 var iix1 = GetIndexOnLine(trans3[i].Name, depSta.LineNo);
      111                                 var iix2 = GetIndexOnLine(trans4[i].Name, destSta.LineNo);
      112                                 var tx1 = GetIndexOnLine(trans3[i].Name, tranLine);
      113                                 var tx2 = GetIndexOnLine(trans4[i].Name, tranLine);
      114 
      115                                 var depRange = afterDepLines.First().Stations.Between(ix1, iix1).Select(x => x.Name).ToList();
      116                                 var destRange = afterDestLines.First().Stations.Between(ix2, iix2).Select(x => x.Name).ToList();
      117                                 var transRange = tranLine.Stations.Between(tx1, tx2).Select(x => x.Name).ToList();
      118                                 if (ix1 > iix1) depRange.Reverse();
      119                                 if (ix2 < iix2) destRange.Reverse();
      120                                 if (tx1 > tx2) transRange.Reverse();
      121                                 var r1 = depRange.Count - 1;
      122                                 var r2 = destRange.Count - 1;
      123                                 var r3 = transRange.Count - 1;
      124                                 var r = r1 + r2 + r3;
      125                                 var rs = msg_transTwice.FormatTo(afterDepLines.First().ToString(), depStation, r1,
      126                                     trans3[i].Name,
      127                                     tranLine.ToString(), r3, trans4[i].Name, afterDestLines.First().ToString(), r2,
      128                                     destStation, depRange.ToJoinString(),
      129                                         transRange.Where(x => !x.IsSame(trans3[i].Name) && !x.IsSame(trans4[i].Name)).ToJoinString(),
      130                                      destRange.ToJoinString(), r);
      131                                 result.Add(new QueryResult()
      132                                 {
      133                                     Description = rs,
      134                                     Range = r,
      135                                     TransferTimes = 2,
      136                                     TransferStations = new List<string>() { trans3[i].Name, trans4[i].Name }
      137                                 });
      138                             }
      139                             #endregion
      140                         }
      141                         #region 查找3次以上換乘的可能結果,尋求最短距離
      142                         var trlines1 = afterDepLines.First().TransferLines.Select(GetLine).ToList();
      143                         var trlines2 = afterDestLines.First().TransferLines.Select(GetLine).ToList();
      144                         var destss = new List<Station>();
      145 
      146                         #region 換乘3次
      147                         foreach (var depline in trlines1)
      148                         {
      149                             foreach (var destline in trlines2)
      150                             {
      151                                 var ss = destline.GetAcrossStations(depline);
      152                                 if (!ss.Any()) continue; //3次換乘
      153                                 var slist1 = afterDepLines.First().GetAcrossStations(depline);
      154                                 if (!slist1.Any()) continue;
      155                                 var s1 = slist1.GetClosestStation(depSta.Name);
      156                                 var s1_ix1 = depSta.Index;
      157                                 var s1_ix2 = s1.Index;
      158                                 var s1_range =
      159                                     afterDepLines.First()
      160                                         .Stations.Between(s1_ix1, s1_ix2)
      161                                         .Select(x => x.Name)
      162                                         .ToList();
      163                                 var s1_h = s1_range.Count - 1;
      164                                 if (s1_ix1 > s1_ix2) s1_range.Reverse();
      165 
      166                                 var s2_ix1 = GetIndexOnLine(s1.Name, depline);
      167                                 var s2_ix2 = GetIndexOnLine(ss.First().Name, depline);
      168                                 var s2_range = depline.Stations.Between(s2_ix1, s2_ix2).Select(x => x.Name).ToList();
      169                                 var s2_h = s2_range.Count - 1;
      170                                 if (s2_ix1 > s2_ix2) s2_range.Reverse();
      171 
      172                                 var slist3 = destline.GetAcrossStations(afterDestLines.First());
      173                                 if (!slist3.Any()) continue;
      174                                 var s3 = slist3.GetClosestStation(ss.First().Name);
      175                                 var s3_ix1 = s3.Index;
      176                                 var s3_ix2 = ss.First().Index;
      177                                 var s3_range = destline.Stations.Between(s3_ix1, s3_ix2).Select(x => x.Name).ToList();
      178                                 var s3_h = s3_range.Count - 1;
      179                                 if (s3_ix1 < s3_ix2) s3_range.Reverse();
      180 
      181                                 var s4_ix1 = GetIndexOnLine(s3.Name, afterDestLines.First());
      182                                 var s4_ix2 = destSta.Index;
      183                                 var s4_range =
      184                                     afterDestLines.First()
      185                                         .Stations.Between(s4_ix1, s4_ix2)
      186                                         .Select(x => x.Name)
      187                                         .ToList();
      188                                 var s4_h = s4_range.Count - 1;
      189                                 if (s4_ix1 > s4_ix2) s4_range.Reverse();
      190 
      191                                 var h = s1_h + s2_h + s3_h + s4_h;
      192                                 var rs = msg_transThreetimes.FormatTo(afterDepLines.First().ToString(), depStation,
      193                                     s1_h, s1.Name,
      194                                     depline.ToString(), s2_h, ss.First().Name,
      195                                     GetLine(ss.First().LineNo).ToString(), s3_h, s3.Name,
      196                                     afterDestLines.First().ToString(), s4_h, destStation, s1_range.ToJoinString(),
      197                                     s2_range.Where(x => x != s1.Name).ToJoinString(),
      198                                     s3_range.Where(x => x != ss.First().Name).ToJoinString(),
      199                                     s4_range.Where(x => x != s3.Name).ToJoinString(), h);
      200                                 result.Add(new QueryResult()
      201                                 {
      202                                     Description = rs,
      203                                     Range = h,
      204                                     TransferTimes = 3,
      205                                     TransferStations =
      206                                         new List<string>()
      207                                         {
      208                                                         s1.Name,
      209                                                         ss.First().Name,
      210                                                         s3.Name
      211                                         }
      212                                 });
      213                                 destss.AddRange(ss);
      214                             }
      215                         }
      216                         #endregion
      217 
      218                         if (!destss.Any()) //換乘4次
      219                         {
      220                             #region 換乘4次
      221                             foreach (var depline in trlines1)
      222                             {
      223                                 foreach (var destline in trlines2)
      224                                 {
      225                                     var deptrlines =
      226                                         depline.TransferLines.Where(x => x != afterDepLines.First().No)
      227                                             .Select(GetLine)
      228                                             .ToList();
      229                                     foreach (var line in deptrlines)
      230                                     {
      231                                         var s1 = line.GetAcrossStations(destline);
      232                                         if (!s1.Any()) continue; //4次換乘
      233                                         var trlist1 = afterDepLines.First().GetAcrossStations(depline);
      234                                         if (!trlist1.Any()) continue;
      235                                         var tr1 = trlist1.GetClosestStation(depSta.Name);
      236                                         var s1_ix1 = depSta.Index;
      237                                         var s1_ix2 = tr1.Index;
      238                                         var s1_range =
      239                                             afterDepLines.First()
      240                                                 .Stations.Between(s1_ix1, s1_ix2)
      241                                                 .Select(x => x.Name)
      242                                                 .ToList();
      243                                         var h1 = s1_range.Count - 1;
      244                                         if (s1_ix1 > s1_ix2) s1_range.Reverse();
      245 
      246                                         var trlist2 = GetLine(tr1.TransferNo).GetAcrossStations(line);
      247                                         if (!trlist2.Any()) continue;
      248                                         var tr2 = trlist2.GetClosestStation(tr1.Name);
      249                                         var s2_ix1 = GetIndexOnLine(tr1.Name, depline);
      250                                         var s2_ix2 = tr2.Index;
      251                                         var s2_range =
      252                                             depline.Stations.Between(s2_ix1, s2_ix2)
      253                                                 .Select(x => x.Name)
      254                                                 .ToList();
      255                                         var h2 = s2_range.Count - 1;
      256                                         if (s2_ix1 > s2_ix2) s2_range.Reverse();
      257 
      258                                         var s3_ix1 = GetIndexOnLine(tr2.Name, line);
      259                                         var s3_ix2 = s1.First().Index;
      260                                         var s3_range =
      261                                             line.Stations.Between(s3_ix1, s3_ix2)
      262                                                 .Select(x => x.Name)
      263                                                 .ToList();
      264                                         var h3 = s3_range.Count - 1;
      265                                         if (s3_ix1 > s3_ix2) s3_range.Reverse();
      266 
      267                                         var trlist3 = destline.GetAcrossStations(afterDestLines.First());
      268                                         if (!trlist3.Any()) continue;
      269                                         var tr3 = trlist3.GetClosestStation(s1.First().Name);
      270                                         var s4_ix1 = GetIndexOnLine(s1.First().Name, destline);
      271                                         var s4_ix2 = tr3.Index;
      272                                         var s4_range =
      273                                             destline.Stations.Between(s4_ix1, s4_ix2)
      274                                                 .Select(x => x.Name)
      275                                                 .ToList();
      276                                         var h4 = s4_range.Count - 1;
      277                                         if (s4_ix1 > s4_ix2) s4_range.Reverse();
      278 
      279                                         var s5_ix1 = GetIndexOnLine(tr3.Name, afterDestLines.First());
      280                                         var s5_ix2 = destSta.Index;
      281                                         var s5_range =
      282                                             afterDestLines.First()
      283                                                 .Stations.Between(s5_ix1, s5_ix2)
      284                                                 .Select(x => x.Name)
      285                                                 .ToList();
      286                                         var h5 = s5_range.Count - 1;
      287                                         if (s5_ix1 > s5_ix2) s5_range.Reverse();
      288                                         var h = h1 + h2 + h3 + h4 + h5;
      289                                         var rs =
      290                                             msg_transFourtimes.FormatTo(afterDepLines.First().ToString(),
      291                                                 depStation, h1, tr1.Name,
      292                                                 depline.ToString(), h2, tr2.Name,
      293                                                 line.ToString(), h3, s1.First().Name,
      294                                                 destline.ToString(), h4, tr3.Name,
      295                                                afterDestLines.First().ToString(), h5, destStation,
      296                                                 s1_range.ToJoinString(),
      297                                                 s2_range.Where(x => x != tr1.Name).ToJoinString(),
      298                                                 s3_range.Where(x => x != tr2.Name).ToJoinString(),
      299                                                 s4_range.Where(x => x != tr2.Name && x != s1.First().Name).ToJoinString(),
      300                                                 s5_range.Where(x => x != tr3.Name).ToJoinString(), h);
      301                                         result.Add(new QueryResult()
      302                                         {
      303                                             Description = rs,
      304                                             Range = h,
      305                                             TransferTimes = 4,
      306                                             TransferStations =
      307                                                 new List<string>()
      308                                                 {
      309                                                             tr1.Name,
      310                                                             tr2.Name,
      311                                                             s1.First().Name,
      312                                                             tr3.Name
      313                                                 }
      314                                         });
      315                                         destss.AddRange(s1);
      316                                     }
      317                                 }
      318                             }
      319                             #endregion
      320                         }
      321                         if (!destss.Any())//換乘4次以上
      322                         {
      323 
      324                         }
      325                         #endregion
      326                         #endregion
      327                     }
      328                 }
      329                 else //始發站和到達站有其中一個是換乘站
      330                 {
      331                     //
            
      
      
      
        
      江苏快3 www.49956k.com | vip61788.com | www.388365.net | www.087w.com | 3662d.com | www.32031e.com | 3644t.com | www.3066mm.com | 91019f.net | www.0169h.com | 3189x.com | www.006785.com | 3301800.com | www.u063801.com | ddh5154.com | www.1500777.com | ww8159.cc | www.11599119.com | 8989774.com | www.3978a.com | 8449ff.com | www.sxyl6.com | www.1314zeri.com | www.150962.com | www.4394.com | 0989.com | www.7350.vip | www.8520t.com | www.909644.com | www.v3308.com | 923820.com | www.615073.com | 4995u.com | www.js89n.vip | tt67890.com | www.66376b.com | www.86611f.com | www.190994.com | www.42423499.com | 131tt.net | www.6364d.com | www.580583.com | www.235925.com | www.3165.com | 52688q.com | www.29277hh.com | 59599z.com | www.587244.com | www.xpj5299.com | 115504.com | www.2021g.com | 8290z.com | www.451.cc | www.pj5506.com | 3331pay.com | www.y80288.com | 500000596.com | www.412228.com | www.889tyc.com | 3559ggg.com | www.5095z.com | www.8694o.com | 80368yy.com | www.357116.com | 5003nn.com | www.132880.com | www.922424.com | 06006o.com | dafa888.com | www.0092737.com | 2146e.com | www.687044.com | www.2248888.com | 5309p.com | www.ac3311.com | www.282456.com | 3750.com | www.196081.com | www.4996lj.com | 3379bb.com | q72227.com | www.55717a.com | www.www-866766.com | 2127uu.com | www.25229.com | www.bb5577.com | 7893w04.com | www.8667w.com | www.a4042.com | 40033h.com | tyc1318.com | www.9570114.com | www.5555wns.com | n5429.com | www.777xm.cc | www.i4042.com | 2019i.cc | 20777788.com | www.hga99900.com | www.277tk.com | c08199.com | bet444000.com | www.159957.com | www.6666zs.com | 33337893.com | www.505420.com | www.4058b.com | www.zsdl9.com | 032656.com | www.631279.com | www.hg8tt.com | www.00217g.com | 9607.com | www.0ttz.com | www.2021m.com | www.4972xx.com | 116060.com | www.160913.com | www.aobo190.com | www.138cpa.com | 83377l.com | bb5360.com | www.333xm.cc | www.777999qipai.com | www.05125e.com | 3640a.com | www.254568.com | www.919654.com | www.hai3333.com | 5309f.com | 55984q.com | www.695093.com | www.126a56.com | www.4suncity.com | www.81866t.com | 0245w.com | www.559748.com | www.9646m.com | www.5504u.com | 495663.com | 048zz.com | www.68568o.com | www.993956.com | www.1230404.com | 5hga.com | 8040ggg.com | www.918795.com | www.1559503.com | www.184998.com | 21866d.com | am777.cc | 3659699.com | www.876899.com | www.js7583.com | www.569393a.com | 55899f.com | 30006z.com | www.130603.com | www.5091l.com | www.8577.com | www.2y925.com | www.88807i.com | 2127jj.com | 33cc8332.com | vip66702.com | www.195322.com | www.3890y.com | www.1764k.com | www.5049a.com | www.142357.com | 3467c.cc | 42422.com | 53166l.com | 243d10.com | www.3126i.com | www.77780yh.com | www.35789.com | www.32666w.com | 18438w.com | 8685050.com | 2147005.com | zgfcw.cc | 00337076.com | www.206881.com | www.hx1183.com | www.198a56.com | www.38138s.com | www.hg99398.com | www.j223344.com | w86811.com | bm1107.com | judingbo1.com | s2554.com | www.526087.com | www.54400z.com | www.32031q.com | www.20hga.com | www.4848p.com | www.hg0002.com | h00351.com | 80892l.com | 36406699.com | 37111g.com | 908080j.com | www.99677v.com | www.599830.com | www.444xm.cc | www.0014z.com | www.26163j.com | www.9822.am | www.60886f.com | www.8645004.com | www.bwinyz50.com | www.118.ceo | www.sha0044.com | www.58665s.com | www.fff3997.com | www.jing6664.com | www.239988.com | www.333460.com | www.bt258.com | www.76060o.com | 2060055.com | zhcp62.com | y68.com | vip7570.com | 3845.com | 2677mmm.com | 4997q.com | wfcp666777.com | 6830bb.com | hg2019.cc | 001122335.com | l8381.com | 3614.com | 2104.com | yin8888.tv | 009900q.com | 22333885.com | www.v2788.com | www.27706.com | www.798878.com | www.40818f.com | www.55112055.com | www.7692.com | www.5360ss.com | www.16181s.com | www.01991.com | www.biying900vip.com | www.3846f.com | www.hg77730.com | www.2118037.com | www.4737.com | www.ascp5.com | www.568001.com | www.108057.com | 7945ww.com | 00888448.com | 610238.com | 00773q.com | hd71966.com | 3534g.com | 11989h.com | www.pu2018.com | www.k27229.com | www.js12258.com | www.70678d.com | www.4996gg.com | www.4833042.com | www.29039.cc | www.767198.com | www.609814.com | 910088.com | 7605y.com | 008423.com | yun888.com | 2381kk.com | www.xpj88001.com | www.hg1161.com | www.4568999.com | www.pj88t.com | www.47506k.com | www.bet73a.com | www.895020.com | www.50024e.com | 4636644.com | b7306.com | 32212t.com | 4195c.com | www.y6007.com | www.163a44.com | www.11599009.com | www.cp3158.com | www.561502.com | 33318m.com | 063976.com | www.001547.com | www.98698j.com | www.47506d.com | www.50080z.com | www.500823.com | 1463c.com | 11c53.com | sss5144.com | www.pj5664.com | www.yh83.net | www.75679.com | www.570323.com | 7733vn77.com | 2018185188.com | www.55225454.com | www.356063.com | www.2418i.com | www.122by.com | 99567j.com | 649600.com | 8905k.com | www.7099666.com | www.40288h.com | www.fo54.com | 31325y.com | 12274466.com | www.751288.com | www.cheng777.com | www.09088.com | www.224066.com | 7003q.com | 3083.com | www.5858564.com | www.917979.com | www.544086.com | 23800.com | 3844xx.com | www.10852a.com | www.923700.com | www.547677.com | 3679qq.com | 5168222.cc | www.07179.com | www.ya2019q.com | www.196509.com | 98345p.com | www.7720b.com | www.55060v.com | www.5095p.com | xinli18sport.com | 8381005.com | www.fa208.com | www.vns18158.com | www.109883.com | 4488aa.com | www.2226358.com | www.ba508.com | www.593477.com | 78666k.com | www.xhtd0099.com | www.4996hs.com | www.976516.com | 11422.com | 256777y.com | www.998855c.com | www.7793b.com | 61652u.com | js456456.com | www.89677v.com | www.708270.com | 11018y.com | www.76543t.com | www.38775kk.com | www.178192.com | 3559j.com | www.22753.com | www.js69vv.cc | www.001865.com | a87570.com | www.449555.com | www.1035h.com | 55331s.com | www.hg22888.net | www.0383.com | 4116t.com | 5589h.com | www.klcp3jc.com | www.799413.com | 75991j.com | www.xb0021.com | www.81520g.com | 3178w.com | 272t.net | www.18617.com | 4880h.com | 500000434.com | www.4972x.com | www.932779.com | 211707.com | www.495655.com | www.77wcw.com | 3304tt.com | www.blrggb01.com | www.7793x.com | 5804vcom | www.5577js.com | www.022t.cc | 0234jj.com | www.97567.com | www.781566.com | 19880a.com | www.kwsy555.com | www.5854v.cc | 5350t.com | www.449msc.com | www.770816.com | 90307n.com | www.790808.com | www.am7779.com | 1775.com | www.19yh2.com | www.220716.com | 4997e.com | www.5517.com | 293365.com | 2883dl.com | www.4520055.com | 8faaa.com | www.32666e.com | www.03882.cc | 3568y.com | www.58665m.com | www.205059.com | 632910.com | www.js69vv.cc | 98345y.com | www.msc269.com | www.927233.com | hga018.com | www.pjh.com | 5855hh.com | www.flb0009.com | www.37439.cc | 8159s.cc | www.5189333.com | 22hh8331.com | www.122445.com | www.938849.com | 22299rr.com | www.2997773.com | 91019u.net | www.04080.com | www.397411.com | 5429g.com | www.365380dh.com | 835889.com | www.89599r.com | 99306e.com | www.14086622.com | www.2632j.com | 45637k.com | www.vns55.me | shb777.com | www.1168z.com | www.55djcp.com | w2306.com | www.85330.com | 3522ff.com | www.boh.cc | 4js345.com | www.hg0444.com | www.369052.com | www.wn2008.com | www.89894t.com | 2214q.com | www.122662.com | xpjggzz.com | www.5981g.com | 566671122.com | www.hg30.com | 0234oo.com | www.25673b.com | www.wcp6698.com | 99995156.com | www.6fa500.com | b667766.com | www.61524s.com | 0808bc.com | www.55755.com | 69990f.com | www.dzj0707.com | 9645hh.com | www.k30.com | 921250.com | www.065666.com | 149301.com | www.438686.com | 2013880.com | www.k6366.com | www.66332e.com | www.vip36059.com | c388c.com | www.1484vip3.com | 365063.com | www.79tyc.com | 99306p.com | www.8000tt.com | 3202l.com | www.163a66.com | l82365.com | www.4058ww.com | TY5509.com | www.h94600.com | xx38648.com | www.135.ag | 588xxx.cc | www.hczx3.com | www.7720y.com | www.375963.com | www.7676760099.com | aocaitong.net | www.qq599.com | 3644e.com | www.8473a.com | 8722kkkk.com | www.4331t.com | ss3189.com | www.c6002.com | www.76543c.com | www.60123u.com | www.76577a.com | 5804e.com | www.45598b.com | 4955y.com | www.50064k.com | www.227vns.com | www.494969.com | www.70039x.com | r4255.com | www.9570116.com | 316m.cc | www.08588p.com | www.917xpj3.com | www.178319.com | www.157234.com | ss1915.com | www.48330q.com | 2992535.com | www.665992.com | www.hg0444.com | 28288jj.com | www.087i.com | mgm3242k.com | www.399140.com | www.2268222.com | giscrocodile.com | www.37266a.com | 13132400.com | www.08588l.com | 3550b.com | www.1117795.com | 55545u.com | www.cc6769.com | www.hqr66.com | 1442.com | www.89777s.com | vns100.net | q759.top | www.am00000.com | 1506766.com | www.635918.com | www.358vns.com | 0015aa.com | www.36166t.com | www.655666d.com | 86811oo.com | www.00797a.com | www.gh0029.com | 365102c.com | www.1754p.com | 4997e.com | www.083025.com | www.tjflcpw.com | p89.cc | www.50064r.com | www.09569f.com | bb0666.com | www.89894y.com | www.4938z.com | 1479x.com | www.bet365193.com | www.76543m.com | 8977nn.com | www.pj56i.com | www.333133p.com | 19991p.com | www.66376q.com | www.42842814.com | 883399w.com | www.5095f.com | www.609494.com | 3640zz.com | www.937016.com | www.38238x.com | xuxrbmlu.cn | www.275780.com | www.xpj618.com | 333ths.com | betke.cc | www.8582zz.com | www.sky2888.com | jjjj005.com | www.78wcp.com | www.hm99999.com | 80368t.com | www.139670.com | www.40339.com | www.xpj0880.com | 4270qq.com | www.18005.com | www.82810.com | ca7701.com | www.087069.com | www.5446n.com | www.33928a09.com | haocaipiao.net | www.c760.vip | www.19019u.com | 2677ggg.com | 3222k.cc | www.61233pp.com | www.42842818.com | hg0886.ws | 5509m.com | www.99638l.com | www.429978.com | dx059.com | 2934u.com | www.7714q.com | www.048888.com | yf688.org | 683bet.com | www.61233d.com | www.281106.com | 111122yy.com | 91019v.net | www.3890x.com | www.8967i.com | www.68666d.com | 5647p.com | www.730678.com | www.ag5555.com | www.4938r.com | 78808a.com | 0730000.com | www.97655c.com | www.435776.com | jjjj008.com | 55881277.com | www.643477.com | www.7036d.com | www.377088.com | yhxizang.vip | 7799833.com | www.33clf.com | www.bwinyz23.com | www.h7788b.com | 40033t.com | 7874.com | www.930xj.com | www.38138e.com | www.xin888222.com | 2078.com | e67890.com | www.hy6934.com | www.79095f.com | www.9949c.com | bb888822.com | 40666333.com | www.339531.com | www.8905m.com | www.9488js.com | 83086v.com | 3936k.com | www.50026u.com | www.26163x.com | www.hg8oo.com | www.84299.com | 253508.com | 6245t.com | 21579455.com | www.500cd.com | www.sss2848.com | www.gp4672.com | 20773399.com | 3522f.cc | 1133589.com | www.564846.com | www.8d818.com | www.dzj.cm | www.bd0088.com | 2992535.com | 1443e.com | 3379.com | www.359215.com | www.52072p.com | www.1429g2.com | www.hg8178.com | www.81866o.com | 4018mm.com | 2643m.com | www.61233v.com | www.66ffh.com | www.789zr.net | www.1168z.com | www.hg0462.com | xpj70064.com | 3416k.com | o86811com | 00773o.com | www.6832n.com | www.yzqhyz.com | www.rycp162.com | www.bb7677.com | www.058hx.com | 7605a.com | 33432s.com | 2004.com | huangguanwang6.com | www.978261.com | www.4323l.com | www.792074.com | www.59505e.com | www.kelake33.com | www.ylg89.com | 6907888.com | 0289q.com | 15a21.net | 9737tt.me | www.572899.com | www.3126h.com | www.1007.cc | www.63606s.com | www.808888c.com | www.84859.com | www.7830s.com | www.3371777.com | feicai00886.com | yabo4303.com | 4002aa.com | 918dp.com | 80579f.com | www.54400v.com | www.550347.com | www.fyyy9.com | www.36788s.com | www.4833058.com | www.ba309.com | www.4996gz.com | www.rycp048.com | www.899111.com | www.wns7657.com | www.330067.com | www.77788806.com | www.ylg238.com | 97618b.com | spj09.com | t666c.com | qq365z.com | 4461j.com | hg10.com | vv444000.com | 474.com | 111122ee.com | jixiang6.com | bj2222.com | 1408q.com | 5231007.com | 66458k.com | 2018bet33.com | 9895i.com | 3678qq.com | 75266.com | 4hg7788.com | c2490.com | 2389900.cc | h151515.com | www.49956e.com | www.66376e.com | www.36166i.com | www.43131i.com | www.78949i.com | www.77803e.com | www.81520e.com | www.99638e.com | www.109075.com | www.50064a.com | 844.cc | 83138q.com | 95gamevip6.com | 168cp-h.com | 27878oo.com | 4255qq.com | 22207a.com | pp3100.com | 67890m.com | bet577.com | k14666.com | 40033dd.com | 983888w.com | 55ss8331.com | k10k120.com | www.3435333.com | www.1019996.com | www.p27229.com | www.w444999.com | www.22gp.com | www.bsd9999.com | www.1759.com | www.7225s.com | www.8905n.com | www.0076788.com | www.66653w.com | www.7515aa.com | www.980221.com | www.506731.com | ylzz1113.com | 3568m.com | 3225q.com | c8159.cc | 2jsttt.com | 1775bb.com | www.7607677.com | www.794933.com | www.36649.com | www.999jyh.com | www.js89b.vip | www.5647ii.com | www.5091s.com | www.701671.com | www.66376a.com | 3007811.com | 0424.com | ggg7570.com | 9195js.com | www.31399t.com | www.899111.com | www.4996ls.com | www.68993253.com | www.2875o.com | www.535350.com | nnn444000.com | 1347.com | 3614q.com | 3225p.com | www.87680n.com | www.643sunbet.com | www.4136y.com | www.984701.com | www.6769r.com | www.444083.com | 88552007.com | 888.vip | LXYL361.com | www.5555365.com | www.3195555.com | www.4996jn.com | www.9646k.com | www.931669.com | 31325n.com | 3559.com | 08820022com | www.8768011.com | www.345066.com | www.47506f.com | www.50051b.com | www.341977.com | 11989b.com | 9068yy.com | www.pj5908.com | www.849958.com | www.vnsr738.com | www.26199.com | www.043552.com | 1213eee.com | 9649u.com | www.76543n.com | www.68058888.com | www.37377y.com | www.743633.com | 3189ss.com | y8287.com | www.85770i.com | www.jbb2017.com | www.234567.pw | www.878749.com | 7726fff.com | 5856rr.com | www.668778.com | www.dfh280.com | www.36580000.com | www.538950.com | 131n.net | 0747v.com | www.6178056.com | www.377666l.com | www.3478h.cc | 500000572.com | 36401177.com | www.11155545.com | www.cp88168.xn | www.80075c.com | www.60108i.com | 55555gg.cc | www.hg9093.com | www.eb000.com | www.50066c.com | 8547gg.com | 4340e.com | 3018kk.com | www.5604c.com | www.pj56k.com | www.102386.com | 88905050.com | www.jinshagg.com | www.hg173j.com | www.7793o.com | 4647033.com | a5429.com | www.566858.com | www.350c5.com | www.526013.com | 3424222.com | www.xpj1111.cc | www.28000z.com | www.2500o.com | 33ydgj.com | 1077pp.com | www.drf0876.com | www.54400w.com | 5004e.com | 8030g.com | www.8058n.com | www.77801r.com | 186568.com | 876023.com | www.447858.com | www.33588h.com | yy67890.com | 3844ss.com | www.yingle55.com | www.07163k.com | 56988h.com | 99151f.com | www.346346.com | www.fyyy6.com | 00555004.com | www.d32126.cc | www.xj7008.com | www.444059.com | 4340m.com | www.939081.com | www.js18682.com | 70118c.com | 22291144.com | www.5049o.com | www.u936.com | 838388i.com | www.pj7893.com | www.266751.com | www.50788i.com | wnsr8802.com | www.huidasj.com | www.666xm.cc | bwinbbb.com | www.87680d.com | www.667700.com | yphbuy.com | 3122cc.com | www.cn365v.com | www.452812.com | 22883q.com | www.9009798.com | www.3479x.com | 3245u.com | www.3868218.com | www.4923k.com | 1591yyy.com | www.882235y.com | www.07679f.com | 88559vip.com | 2643r.com | www.9737pp.com | www.394811.com | 45637p.com | www.twcp00.com | www.594277.com | 6261e.com | www.5504q.com | www.602852.com | 33382ll.com | www.rgcp444.com | www.580820.com | 3365.com | www.qm999.com | www.401275.com | 20772222.com | www.hg8jj.com | www.175901.com | 6830e.com | www.678js333.com | 4379f.com | xx888x.com | www.flb377.com | 61322244.com | www.3xinhao.com | www.349229.com | 37amjs.com | www.cz3065.com | www.33czt.com | 3534z.com | www.428166.com | www.330605.com | blhvip23.com | www.07679h.com | 2306s.com | www.21365ii.com | www.50989g.com | 4789cz.com | www.tyc8879.com | www.344747.com | 8036kk.com | www.ee4625.com | 9339999s.com | www.yongligao.hk | www.qbwc1.com | d5429.com | www.bet63r.com | lll0055.com | www.365699.com | www.32123j.com | 3568yy.com | www.55545d.com | dh08199.com | www.csjindan.com | www.39058.cc | 9679z.com | www.xpj718.com | h99345.am | www.18373876153.com | www.18czj.com | 98955m.com | www.9895n.com | xpj9411.cn | www.8148.com | www.616971.com | 500000757.com | www.ribo80.cc | 1813dd.com | www.458828.com | 44ss8331.com | www.21365hh.com | www.hx1164.com | 64111v.com | www.68993231.com | 0241t.com | www.19019z.com | 3844z.com | www.948900.com | www.394177.com | www.yh8880.cc | www.51558.com | 28288ww.com | www.zsjzxyy.com | 3644h.com | www.4694y.com | zhcp22.com | www.js297.com | www.165595.com | www.vns9968.com | www.996863.com | pppp0066.com | www.26163d.com | yh123456.com |