日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

匹配算法

發布時間:2024/8/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 匹配算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲中的匹配算法一般都是出現在戰斗類功能中,比如說3v3,1v1,50v50,10v10,還有那種劃分為3方勢力的戰斗類功能等。通過一個全局管理器來對參賽玩家進行匹配,生成每場戰斗的參賽玩家。匹配規則可以是根據玩家的戰力,等級或者報名時間順序,
或者隨機等來進行組合。常見的匹配算法如下:

(1)單循環匹配算法
例如有A B C D 4個玩家,單循環規則下要求的匹配組合有AB,AC,AD,BC,BD,CD,那么:
第一輪比賽為:
AB CD

第二輪比賽為:
AD BC

第三輪比賽為:
AC BD

準備兩個隊列,從下標為1開始遍歷所有參賽玩家數據(假如數組為ABCD),一個隊列放下標為奇數的玩家,一個隊列存放下標為偶數的玩家,例如 隊列1放C,隊列2放BD玩家,同時玩家A存在一個變量tmpuser上,
外層循環遍歷比賽輪次,內層循環遍歷隊列2玩家,然后如果下標為0則tmpuser和C打,即A和C打,否則隊列1下標為i-1的玩家和隊列2下標為i的玩家匹配在一起,即另外一組為B和D打。
該輪匹配結束后更新隊列1和隊列2中的玩家,更新方法為順時針循環更新,即:(C移動到隊列2的末尾,B移動到隊列1的開始)
? ?C? ? ? ? ?B
? ? ? ?->?
B D ?? ?D C

然后再匹配第二輪的玩家,即AD BC,以此類推然后更新隊列1和隊列2中的玩家即:
? ? B? ? ? ? ? D
? ? ? ? ->
D C?? ? ? C B

即第三輪的玩家為AC DB

同時為了可以區分每場比賽,可以為每場比賽設置一個id號,即AB CD AD BC AC BD 的id號可以分別設置為1 2 3 4 5 6

總結

以上是生活随笔為你收集整理的匹配算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。