麻將和牌有兩種形式,即:
模式1 :11,11,11,11,11,11,11
模式2: 11,123,123,123,123(全部或者部分123可以被111,1111替代)
注:123=連續3張同花色牌,如4d5d6d。111=3張同樣的牌,如3t3t3t。
條=t,筒=d
模式1即稱之為「巧7對」,一組牌剛好是7對牌。但是這裡有乙個疑問,「對」能否重複,即「槓」能否能當作2「對」(即題目中的「四歸一」)。正常的和牌最後手中總共有14張牌,實際生活中以模式1和牌並且計算帶「槓」的翻番是不可能的。
模式2有很多變種。首先123是指連續花色的3張牌,諸如「1條2條3條」或「4筒5筒6筒」等等。也可以是三種同花色的,如「1筒1筒1筒或「9條9條9條」。倘若你有了或者這樣的一組牌,別人又出了一張同樣的牌或者你接到一張同樣的牌,這個時候就是「四歸一」或者「槓」了。
日常生活中,實際上每乙個「槓」,你都需要宣告(不管是明「槓」或是暗「槓」),然後再接一張牌,也就是說,隨著你每宣告你有1個槓,最後和牌的時候你的牌都遞增1張。假設這樣的場景,你手中有13張牌,其中有一組牌「2條2條2條」,這時你又接到一張「2條」,那麼你有兩個選擇。(1)宣告你接到乙個「槓」,即暗槓,然後你再接一張牌,倘若你此時和牌,那麼你的牌有13+1+1=15張,當然這不是巧7對;倘若不和牌,你必須打出去一張並接著打下去。(2)倘若你不宣告,又剛好組成了巧7對,那你可以和牌了此時共有14張牌,但這「2條2條2條2條」並不是「槓」因為你並未宣告,你只能當兩對使用。倘若你沒有和牌,那你就必須打出去一張牌了,即手上只有13張牌了。
總的來說,實際生活中,你手中出現了「四歸一」,要麼宣告,然後你多接一張牌,按照模式2和牌。要麼你不宣告,按照模式1和牌。
但此處的題目並沒有具體說明,處於嚴謹的考慮,模式1帶「四歸一」和牌,即沒有宣告的「槓」,我也是是計算了番數的。
程式中和牌方式和番數的舉例如下:
模式1:
1t1t,2d2d,3t3t,4d4d,5d5d,6d6d,7t7t. 巧7對:2番模式2:1t1t, 2d2d,3t3t,4d4d,5d5d,6d6d6d6d. 巧7對+1「四歸一」== 2+2=4番
1t1t, 2d2d,3t3t3t3t ,5d5d,6d6d6d6d. 巧7對+2「四歸一」== 2+4=6番
1t1t, 2d2d2d2d,3t3t3t3t , 6d6d6d6d. 巧7對+3「四歸一」== 2+6=8番
1t1t,2d3d4d,4d5d6d,7d8d9d,2t3t4t. 0番模式2中,全部或者部分連續三張同花色的一組牌如「2t3t4t或「7d8d9d」都可以被同花色的相同三張牌如「5t5t5t」 替代,如上。甚至是連續4張相同牌即「四歸一」替代,如下,當然後者計算番數。1t1t,2d3d4d,4d5d6d,7d8d9d,1t2t3t. 1番
1t1t,2d2d2d2d,4d5d6d,7d8d9d,2t3t4t. 2番
1t1t,2d2d2d2d,4d5d6d,7d8d9d,1t2t3t. 1「四歸一」+卡2條==2+1=3番
1t1t,2d2d2d2d,5t5t5t,7d8d9d,1t2t3t. 1「四歸一」+卡2條==2+1=3番
1t1t,2d2d2d,5d5d5d5d,7d7d7d7d,5t6t7t. 2「四歸一」==4番輸入: 最多18張牌,故最大儲存空間為2*18+4','+1'.'+'\0'=421t1t,2d2d2d2d,5d5d5d5d,7d7d7d7d,1t2t3t. 3「四歸一」+卡2條==6+1=7番
1t1t,2d2d2d2d,5d5d5d5d,7d7d7d7d,3t3t3t3t. 4「四歸一」==8番
1t1t,2d2d2d2d,4d5d6d,1t2t3t,1t2t3t. 2+1+1=4番
1t1t,2d2d2d2d,1t2t3t,1t2t3t,1t2t3t. 2+1+1+1=5番
遍歷字串:
1)判斷是否出現連續三種同花色牌(ka),如形如「4d5d6d」。在這種情況下,判斷(ka2tiao)是否出現卡2條即「1t2t3t」。輸出:2) 判斷(lian3)是否出現連續3張相同牌如「7t7t7t」
3) 判斷(gang)是否出現「四歸一」並計數。
1) 倘若連續三張同花色牌4d5d6d一組牌出現,或者連續三張相同牌7t7t7t的一組牌牌出現,或者「四歸一」出現了4次,那麼和牌是按照模式2和牌。
番數=「卡2條」次數*1 + 「四歸一」的次數*22) 模式1即巧7對和牌
番數=2+2*「四歸一」的次數
#include #include using namespace std;
int main()
} }
if(ka||lian3||gang==4)//存在nt(n+1)t(n+2)t或2d2d2d的或者4個「四歸一」情況,必定是第2種和牌方式
fan=ka2tiao*1+gang*2;
else
fan=2+gang*2;//巧七對的和牌方式
華為機試 輸出含「23」的數
輸入一行數字 123 423 5645 875 186523 在輸入第二行 23 將第一行中含有第二行中 23 的數輸出並排序 結果即 123 423 186523 先排序,順序遍歷每個數字,看是否含有23 include includeint cmp const void a,const void...
華為機試 明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...
華為機試 明明的隨機數
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...