最少的盒子
時間限制:c/c++語言 1000ms;其他語言 3000ms
記憶體限制:c/c++語言 131072kb;其他語言 655360kb
題目描述:
bob有n個空盒子,第i個盒子是邊長為a[i]的立方體,如果乙個盒子的邊長嚴格小於另乙個盒子,並且大盒子裡面沒有其他小盒子,小盒子也沒有放入其他大盒子中,那麼這個小盒子可以放入大盒子。bob可以根據條件任意的放盒子,因為他想看見最少數量的盒子。沒有放入其他盒子的盒子是可以被看到的,請你幫bob確定能看見盒子的最少數量。
測試用例
31 2 3
這題思路很簡單,能疊加放的無非是遞增序列,首先我們找出最長的遞增序列,然後遞迴就好,注意遞迴出口
ac**
def f(target):
if(len(target)) == 0:
return
if(len(target) == 1):
return [target]
for i in target:
if i <= 0:
return
tmp = sorted(list(set(target)))
res =
dic_target = {}
for i in target:
if i not in dic_target:
dic_target[i] = 1
else:
dic_target[i] += 1
for i in dic_target:
res += (dic_target[i] -1) * [i]
return f(res)+[tmp]
while true:
x = raw_input()
y = map(lambda x:int(x),raw_input().split())
print len(f(y))
第二題,
清雨的自助餐
時間限制:c/c++語言 1000ms;其他語言 3000ms
記憶體限制:c/c++語言 131072kb;其他語言 655360kb
題目描述:
清雨又在吃自助餐了。
排在清雨面前的有n種食物,排成一排,清雨可以選擇其中的若干種食物,但是不能連續選擇相鄰的食物。因為清雨很挑食,當所有食物都不合口味時,他可以一種都不選,即乙個都不選也算為一種方法。
請問他有多少種選擇食物的方法呢?
樣例輸出
簡單的思路是斐波那契數列,ac**如下:
def f(n):
if(n == 0):
return 1
if(n == 1):
return 2
count = 0
a = 1
b = 2
while(count < n):
a,b = b,a+b
count += 1
return a
while true:
x = int(raw_input())
print f(x)
但是,這題其實很好玩,我們完全可以採用遞迴的思想,n個點所有方案,可以看成第n個點的方案和前面n-1個方案的和,我們可以從第n個點來看,如果第n個與前面n-1種選擇方案中相鄰,那麼就跳過,不然就合併成一種新的方案,加入到總體方案中去,基於這個思路可以用下列**輸出所有的結果:
def f(n):
if(n == 0):
return
if(n == 1):
return [[1],]
tmp =
x = n - 1
for i in f(n-1):
if x not in i:
return tmp + f(n - 1)
while true:
x = int(raw_input())
print f(x)
遺憾的是這段**超時了,只能不情願的寫斐波那契方法 愛奇藝程式設計題
1 爐石傳說 時間限制 c c 語言1000ms 其他語言3000ms 記憶體限制 c c 語言65536kb 其他語言589824kb 題目描述 小明喜歡玩一款叫做爐石傳說的卡牌遊戲,遊戲規則如下,玩家擁有n顆水晶和m張卡牌,每張卡牌的使用會消耗a顆水晶並且造成b的傷害值,請你幫小明算一下該如何使...
愛奇藝20屆春招程式設計題1
題目 根據自己的回憶寫出題目大概的意思 輸入一串只包含數字的字串str和乙個整數k,從字串中剔除k個數字,使剩下的字串按照原來的順序,得到的整數最小,輸出這個整數。字串長度n 240,k n。示例1 輸入 12553 2 輸出 123 示例2 輸入 100050 4 輸出 0 錯誤思路 考試的時候,...
2021屆秋招 愛奇藝筆試 匹配括號
題目描述 輸入字串只包括 檢查是否正確匹配 思路 簡單題,棧頂匹配就完事了 public class num3 hashmapkuomap new hashmap kuomap.put smallright,smallleft kuomap.put middleright,middleleft ku...