小包最近迷上了一款叫做雀魂的麻將遊戲,但是這個遊戲規則太複雜,小包玩了幾個月了還是輸多贏少。
於是生氣的小包根據遊戲簡化了一下規則發明了一種新的麻將,只留下一種花色,並且去除了一些特殊和牌方式(例如七對子等),具體的規則如下:
例如:
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索引快的原理 回答這個問題需要先看一下資料庫的儲存結構 頁結構頁和頁之間的關係 頁和頁之間的關係 有個知識,之前不知道的 聚集索引 以主鍵建立的索引,葉子節點儲存的是表中的資料 非聚集索引 非主鍵建立的索引,葉子節...