1。萬萬沒想到之聰明的編輯
新增鏈結描述
import sys
n = int(sys.stdin.readline()[:-1])
input =
for i in range (n):
#print(input)
result =
for inp in input:
length = len(inp)
res = inp[:2]
if length >= 3:
for i in range(2, length):
#print('inp ', inp)
#print('res ', res)
if inp[i] == res[-1] and res[-1] == res[-2]:
continue
elif inp[i] == res[-1] and res[-2] == res[-3]:
continue
res += inp[i]
for res in result:
print(res)
2.萬萬沒想到之抓捕孔連順
新增鏈結描述
import sys
n,d = map(int, input().split())
nums = list(map(int, input().split()))
#nums = (sys.stdin.readline()[:-1].split())
#nums = [int(f) for f in nums]
left, right, res = 0, 2, 0
while left < n-2:
while right < n and nums[right] - nums[left] <= d:
right += 1
num = right - 1 - left
res += num * (num - 1) // 2 #計算left到right之間的點k的組合數c(k, 2)
left += 1
print(res % 99997867)
3.雀魂啟動!
新增鏈結描述
def ishu(nums):
if not nums:
return true
n = len(nums)
count = nums.count(nums[0])
# 沒出現過雀頭,且第乙個數字出現的次數 >= 2,去掉雀頭剩下的能不能和牌
if n%3 and count >= 2 and ishu(nums[2:]):
return true
# 如果第乙個數字出現次數 >= 3,去掉這個刻子後看剩下的能和牌
if count >=3 and ishu(nums[3:]):
return true
# 如果存在順子,移除順子後剩下的能和牌
if nums[0]+1 in nums and nums[0]+2 in nums:
tmp = list(nums) #儲存現場
tmp.remove(nums[0])
tmp.remove(nums[0]+1)
tmp.remove(nums[0]+2)
if ishu(tmp):
return true
return false
def main(nums):
d = {} #統計出現次數(詞頻)
for i in nums:
d[i] = d.get(i, 0) + 1
card_list = set(range(1, 10)) - #只取次數為4的,用來做差集
res =
for i in card_list:
if ishu(sorted(nums + [i])):
print(' '.join(str(r) for r in sorted(res)) if res else '0')
nums = [int(x) for x in input().split()]
main(nums)
4.特徵提取
新增鏈結描述
case = int(input())
res = 0
for _ in range(case): #遍歷每個用例
frames = int(input())
last_map = {} #上一幀頻率
for _ in range(frames): #遍歷每幀
line = list(map(int, input().split(' '))) #每行轉成陣列
n = line.pop(0) #特徵數
current_map = {} #記錄特徵頻率
for i in range(n): #取出每幀所有特徵
feature = (line[2*i], line[2*i+1])
#print(feature)
current_map[feature] = last_map.get(feature, 0) + 1 #統計特徵頻率
res = max(res, current_map[feature]) #記錄最大連續幀
#print(last_map, current_map)
last_map = current_map #更新
print(res if res >= 2 else 1)
5.畢業旅行問題
新增鏈結描述
dfs回溯,沒有完全通過
import sys
n = int(input())
m =
for i in range(n):
#print(m)
vis = [false] * n
vis[0] = true
res = sys.maxsize
def abc():
print(m)
def dfs(vis, local, vn, price):
global res
#print(res)
if price > res:
return
if vn == n:
val = price + m[local][0]
res = min(res, val)
return
for i in range(1, n):
if vis[i]:
continue
vis[i] = true
dfs(vis, i, vn+1, price + m[local][i])
vis[i] = false
#abc()
dfs(vis, 0, 1, 0)
print(res)
dp:
新增鏈結描述
6.找零
新增鏈結描述
num = 1024 - int(input())
coin_64 = num // 64
num = num % 64
coin_16 = num // 16
num = num % 16
coin_4 = num // 4
num = num % 4
coin_1 = num
print(coin_64 + coin_16 + coin_4 + coin_1)
7.機械人跳躍問題
新增鏈結描述
一維dp:
input()
arr = list(map(int, input().split(' ')))
# 假設跳躍前能力為e,要跳的高度為h,那麼跳躍後的能量就是2e-h,
# 那麼跳躍後的能量加上高度就是跳躍前的兩倍,然後從後往前逆推。
e = 0 # 跳到最後一步的能力值設為0
#從後往前
#遞推公式為e(k) = [e(k+1)+h(k+1)] / 2
#由於e都是整數,因此考慮向上取整,故實際運算時用[e(k+1)+h(k+1)+1] // 2
for h in arr[::-1]:
e = (e + h + 1) >> 1 #用右移運算代替對2整數除也可
print(e)
位元組跳動2019春招研發部分程式設計題 訂正
1.小包最近迷上了一款叫做雀魂的麻將遊戲,但是這個遊戲規則太複雜,小包玩了幾個月了還是輸多贏少。於是生氣的小包根據遊戲簡化了一下規則發明了一種新的麻將,只留下一種花色,並且去除了一些特殊和牌方式 例如七對子等 具體的規則如下 總共有36張牌,每張牌是1 9。每個數字4張牌。你手裡有其中的14張牌,如...
2019位元組跳動春招題目
2019位元組跳動演算法崗春招 不是2020屆的秋招!共四道程式設計題,沒有選擇題。筆試的時候只做出來了前兩道,這裡參考了大佬 azhao1993 的解題思路,把後兩道的解法整理一下。現在有n人參加程式設計比賽,比賽結束後每個人都得到乙個分數。現在所有人鋪成一圈 第1個和第n個相鄰 領取獎品,要求 ...
2019春招筆試涼經 位元組跳動20190316
1.求找錢最少給幾個硬幣 有1024元錢 輸入你花掉的數目問找回的硬幣數最小 有64 16 4 1 的硬幣 res 1024 n cnt 0 while res 64 res 64 cnt 1 while res 16 res 16 cnt 1 while res 4 res 4 cnt 1 whi...