位元組跳動 雀魂啟動

2021-10-05 16:13:25 字數 3560 閱讀 1171

小包最近迷上了一款叫做雀魂的麻將遊戲,但是這個遊戲規則太複雜,小包玩了幾個月了還是輸多贏少。

於是生氣的小包根據遊戲簡化了一下規則發明了一種新的麻將,只留下一種花色,並且去除了一些特殊和牌方式(例如七對子等),具體的規則如下:

例如:

111

2226

6677

799 可以組成1,2

,6,7的4個刻子和9的雀頭,可以和牌11

1122

3356

7789 用1做雀頭,組123

,123

,567

,789的四個順子,可以和牌11

1222

3335

6779 無論用123

7哪個做雀頭,都無法組成和牌的條件。

現在,小包從36張牌中抽取了13張牌,他想知道在剩下的23張牌中,再取一張牌,取到哪幾種數字牌可以和牌

輸入描述:

輸入只有一行,包含13個數字,用空格分隔,每個數字在1

~9之間,資料保證同種數字最

多出現4次。

輸出描述:

輸出同樣是一行,包含1個或以上的數字。代表他再取到哪些牌可以和牌。若滿足條件的有

多種牌,請按從小到大的順序輸出。若沒有滿足條件的牌,請輸出乙個數字0

輸入例子1:

111

2225

5566

69

輸出例子1:

9
例子說明1:

可以組成1,2

,6,7的4個刻子和9的雀頭

輸入例子2:

111

1223

3567

89

輸出例子2:

4

7

例子說明2:

用1做雀頭,組123

,123

,567或456

,789的四個順子

輸入例子3:

111

2223

3357

79

輸出例子3:

0
例子說明3:

來任何牌都無法和牌
for

(int i =

1;i <=9;

++i)

//num是原本牌的集合,x是列舉的牌

inline

bool

hupai

(vector<

int> num,

int x)

inline

bool

ishu

(vector<

int>num)

//刻子

//第一張牌的數量大於等於3張才有可能是刻子

if(count0 >=3)

//順子

//注意走到這裡並不代表count0 == 1,(牌面是1---9,所以可以直接進行+1來判斷)

//如果下一張牌和下下一張牌的數量出現的次數超過一,那麼這種情況是有可能構成順子的if(

count

(num.

begin()

,num.

end(

),num[0]

+1)>0&&

count

(num.

begin()

,num.

end(

),num[0]

+2)>0)

return

false

;}

**一:

#include

using

namespace std;

typedef

long

long ll;

inline

bool

ishu

(vector<

int>num)

//刻子

//第一張牌的數量大於等於3張才有可能是刻子

if(count0 >=3)

//順子

//注意走到這裡並不代表count0 == 1,(牌面是1---9,所以可以直接進行+1來判斷)

//如果下一張牌和下下一張牌的數量出現的次數超過一,那麼這種情況是有可能構成順子的if(

count

(num.

begin()

,num.

end(

),num[0]

+1)>0&&

count

(num.

begin()

,num.

end(

),num[0]

+2)>0)

return

false;}

//num是原本牌的集合,x是列舉的牌

inline

bool

hupai

(vector<

int> num,

int x)

intmain()

for(

int i =

1;i <=9;

++i)

if(ans.

size()

==0)puts

("0");

else

return0;

}

**二:

#include

#include

#include

using

namespace std;

bool

ishu

(map<

int,

int> mp,

int num)if(

(it-

>second)

>=3)

if((it-

>second)

>

0&& mp[

(it-

>first)+1

]>

0&& mp[

(it-

>first)+2

]>0)

return

false;}

intmain()

vector<

int> ans;

for(

int i =

1;i <

10;i++)}

if(ans.

empty()

) cout<<

0

return0;

}

兩種** 的思路一樣,只不過第二個**更好的體現回溯的思想

位元組題 雀魂啟動!

雀魂啟動!位元組跳動2019春招研發部分程式設計題彙總 牛客網 輸入是13個數字,統計每個數字出現的次數,根據題意,次數最大為4,而出現的數字種類在4 9之間,和牌方式有兩種,均需要乙個雀頭 2張一樣的牌作雀頭 分析一下,如果出現數字種類只有4種,那和牌的唯一方式就是乙個雀頭 2 4個順子 12 因...

b zj 雀魂啟動(分類討論的回溯)

給定13張牌,問加入1 9中的任意一張牌後,能否達成和牌 滿足以下兩個條件 思路 暴力刪除即可,更優的做法是使用計數來實現邏輯刪除 def dfs a if len a 2 and a 0 a 1 return 1 for i in range len a 4 if a i a i 4 統一種類的牌...

位元組跳動mysql面試 位元組跳動 Golang面試

應朋友之邀,今天下午去位元組送了顆人頭,最後不負眾望,被面試官攆出來了 一面mysql索引快的原理 回答這個問題需要先看一下資料庫的儲存結構 頁結構頁和頁之間的關係 頁和頁之間的關係 有個知識,之前不知道的 聚集索引 以主鍵建立的索引,葉子節點儲存的是表中的資料 非聚集索引 非主鍵建立的索引,葉子節...