麻將演算法(八)胡牌之選擇正確的組合方式

2021-08-09 21:49:01 字數 1141 閱讀 7955

手牌中的「對子」取出後,將「連牌」和「同牌」方進入乙個list裡面,並通過m選n的組合方式將可能出現的種類選擇出來:

public

static list kindstotype(int cbcardindex, int numberinhand, listfrontage, listtagkinditem_list)}}

int startcard1 = new

int[startcard.count]; //為了由於在比較過程中會改變手牌的值,所以將初始手牌轉殖乙個副本,用副本進行比較

int indexnew = 0;

foreach (int ing in comnbinelist)}}

int clonearray = new

int[newcard.count]; //把list轉化為陣列

for (int i = 0; i < clonearray.length; i++)

int clonearray1 = (int)clonearray.clone(); //比較依舊是通過轉殖出來的副本進行比較,改變副本的值

for (int i = 0; i < startcard1.length; i++)

for (int z = 0; z < startcard1.length; z++) //將初始手牌的副本與乙個組合後的牌的副本進行比較,如果有相同的,就把他們這個相同的值都歸零}}

bool isitm1 = true;

for (int i = 0; i < startcard1.length; i++)

}bool isitm = false;

for (int i = 0; i < clonearray.length; i++)

}if (newcard.count == clonearray1.length && isitm && isitm1) //如果初始手牌的副本與乙個組合後的牌的副本沒有不等於零的,且數目相同,就說明選出來的組合和手牌一致。是一種正確的組合方式

else

}return userkinds;

}

list是引用型別,如果在下面改變原來的值,會改變本身的值,因此需要在每一次進行判斷前建立乙個副本代替他去執行比較操作。

麻將胡牌演算法

majiang algorithm是帶多張鬼牌的通用胡牌演算法,採用查表方式,簡單高效。在生成表的階段,時間是不值錢的,所以生成方法我們可以任意窮舉。首先分為普通 風 箭三張表。窮舉出所有的key,比如普通表,就是000000000 444420000,因為每一種牌最大4張,且總和不超過14張牌。對...

麻將胡牌演算法 C

這裡只介紹普通的麻將胡牌演算法,也就是7個對子或者 1個對子 3 n n 三個順子或者三個一樣的 其中字牌 東南西北中發白 不能算順子。首先對於每張牌 它有牌的的數字 1 9,牌的種類 萬條筒以及字 所以先封裝乙個牌的包裝類。如果要和伺服器互動的話就應該給這個類序列化 即加上system.seria...

麻將無賴子胡牌演算法

include typedef unsigned char uchar typedef unsigned short ushort define max count 14 define wik null 0 define wik chi hu 0x40 uchar analysedeletepair...