2015華為軟賽(八) 動作二

2021-07-03 14:32:50 字數 2785 閱讀 8989

點滴記錄總結,一天一打雞血。

環境及測試說明:

最後一節吧,真心覺得貼**沒意思,反正自己不會去看**了,只想把中間一些感觸寫下來,時間一長加上一忙,感覺找不到了。這時候的感觸是,有貨趁早寫,別拿忙開脫,就是懶!這一節先別貼**,來點雞湯解渴先~

在能玩牌的基礎上,想玩好可不太簡單,特別是程式本身就是死的,這就需要策略具備一定靈活性,說到這就不由自主往機器學習上靠,其實沒那麼複雜,由於每次遊戲有上限600局,加上決策時間有限500ms,使得機器學習在這裡很難湊效的。但是,策略模型是要的,對手模型也是要的。這兩個,很重要,你可以ifelse壘起來,儘管效率不太高;也可以基於一些比較成熟的演算法模型,這樣最好,但是需要理論基礎了。

你的策略會綜合很多指標,比如籌碼數、玩家數、跟注額、座次順序等,大部分玩家都是在這一點下足功夫了,因為這樣簡單高效。至於對手模型,我個人覺得這才是高階玩家的分水嶺,像馬雲說的,其他不重要,了解人需求最重要,由於大部分玩家程式比較刻板,這給建立對手模型帶來契機,當知道對手套路,加註棄牌收放自如。比賽中真看到的,有這樣的人。賽後還調侃,打個牌都算,還怎麼玩。。。

寫到這打住吧,說說我的響應動作。在hold圈,一般不會出現隨便跟注的情況,要麼自己是大盲注(要咋唬),要麼就是拿大牌,就加註,一般不會跟注,除非對手加註金額比較高。在之後的圈,就判斷自己是否是咋唬,咋唬一套,非咋唬一套,總之只要自己加了,就不會輕易棄牌。設定加註滿足一定條件就棄牌的策略,這樣真的不好,初賽看這樣的比賽真是虐心。。。

給出hold圈的正常**吧:

char* holdone() ;

card[0] = gameinfo.card[0] % 14;

card[1] = gameinfo.card[1] % 14;

int pairs = 0;

if (card[0] == card[1])

pairs = card[0];

int len = strlen(opponent.bigid);

if (pairs >= 11)

if (pairs >= 8)

if (gameinfo.total_call < 125)

return raise(3);

else

if (gameinfo.total_call < 200)

return raise(2);

return

"check";

}if (card[0] >=11 && card[1] >= 11)

if (gameinfo.total_call < 125)

return raise(3);

else

if (gameinfo.total_call < 200)

return raise(2);

return

"check";

}return folddecision();

}

最後有個folddecision(),這樣寫的好處之前說過,此外,還可以判斷自己是否第乙個出牌,第乙個就可以讓牌,沒必要棄牌的。

下面給出river圈的**:

char*   riverone(int detacall) ;

card[0] = gameinfo.card[0] % 14;

card[1] = gameinfo.card[1] % 14;

card[2] = common_cards[0] % 14;

card[3] = common_cards[1] % 14;

card[4] = common_cards[2] % 14;

card[5] = common_cards[3] % 14;

card[6] = common_cards[4] % 14;

int max_card = max(max(max(card[2], card[3]), max(card[4], card[5])), card[6]);

if (cardtype.my_type >= four)//straight four

else

if (cardtype.my_type == fullhouse)//fullhouse

else

if (cardtype.my_type >= straight) //s_card.flush

if (cardtype.s_card.own == 5)

return

"check";

}if (cardtype.f_card.own == 5)

return

"check";}}

if (cardtype.s_card.com >= 4 || cardtype.f_card.com >= 4)

if (detacall > 120)

return folddecision();

if (cardtype.my_type == three)

if (card[0] >= 12 || card[1] >= 12)

if (detacall > 100)

return folddecision();

return folddecision();

}//under twopairdecision

return twopairdecision(card, detacall, max_card);

return folddecision();

}

上面有個twopairdecision(card, detacall, max_card);這樣寫的好處是提高**復用率了,因為後面三個押注圈都會有這樣的策略。

八,awk動作總結之二

前文中,我們介紹了awk中的條件判斷語句。比如 if 比如 if.else.比如 if.else if.else.我們說過,這些語句都可以歸類為 控制語句 但是這些並不是 控制語句 的全部,今天我們繼續聊聊awk的 控制語句 今天的話題主要與 迴圈 有關,說到 迴圈 你一定會想起 for while...

2015屆華為校園招聘機試題二

include include include includeusing namespace std 輸入是乙個只包含拼音的字串,請輸出對應的數字序列。轉換關係如下 描述 拼音 yi er san si wu liu qi ba jiu 阿拉伯數字 1 2 3 4 5 6 7 8 9 輸入字元只包含...

慢動作攝影挑戰賽來襲,開啟華為會員中心參賽贏新機

光影之間,定格流年。當鏡頭和時間相遇,原本的引數就變得不再冷冰冰。一部手機,就可以定格乙個感動的瞬間 乙份當下的心情 一段時光裡的美好。近日,華為會員中心上線慢動作攝影挑戰賽,邀請使用者使用慢動作攝影模式拍攝 記錄生活的點點滴滴,體驗慢動作攝影的魅力。現在起,將你拍攝的慢動作 上傳至會員中心活動頁面...