python 牛客真題 幸運的袋子
DFS,需要剪枝
n=int(input())
num=list(map(int,input().split()))
num.sort()
def dfs(num,mysum,mymul):
count=0
for i in range(len(num)):
if i>0 and num[i]==num[i-1]:
continue
mysum+=num[i]
mymul*=num[i]
if mysum>mymul:
count+=1+dfs( num[i+1:],mysum,mymul)
elif num[i]==1:
count+=dfs(num[i+1:],mysum,mymul)
else:
break
mysum-=num[i]
mymul/=num[i]
return count
print(dfs(num,0,1))
相關推薦
python 牛客真題 幸運的袋子
DFS,需要剪枝 n=int(input()) num=list(map(int,input().split())) num.sort() def dfs(num,mysum,mymul): count=0 for i in range(len(num)):
python 牛客真題 合唱團
n=int(input()) performance=list(input().split()) kd=list(input().split()) k=int(kd[0]) d=int(kd[1]) dp=[[0]*n for _ in range(k)] dp1=[[0]*n for _
python 牛客真題 統計迴文
s=input() t=input() def judge(s): ls=len(s) for i in range(ls//2): if s[i] != s[ls-1-i]: return False return True
python 牛客真題 不要二
num=input().split() n=int(num[0]) m=int(num[1]) if m%4==2: m,n=n,m tmp1=(m+1)//2 tmp2=m-tmp1 mysum=0 for i in range(n): if i%4==0 or i%4==
python 牛客真題 混合原料
一道很讚的題目。遵循這樣一個最基本的思路,最大的數肯定不能通過異或生成,所以必須要取。遵循這個思路:除了這個最大的數其他所有與其位數相同的數都可以通過異或生成。再看異或這個操作本身的特殊性(不同為1,相同為0)即意味著如果最大的數的位數為4,那麼肯定要取到位數為3的最大數。 n=int(
python 牛客真題 數列還原
考察全排列? nk=list(input().split()) n=int(nk[0]) k=int(nk[1]) num=[int(c) for c in list(input().split())] m=[0]*(n+1) index=[] for i in range(n):
python 牛客真題 藏寶圖
s=input() t=input() l1=len(s) l2=len(t) i,j=0,0 while i<l1 and j<l2: if s[i]==t[j]: i+=1 j+=1 else: i+=1 if
python 牛客真題 分蘋果
改成 只能往相鄰移動的話難度會增加 n=int(input()) num=[int(c) for c in input().split()] if sum(num)%n !=0: print(-1) else: target=sum(num)//n flag =
python 牛客真題 分田地
二分貪心查詢 nm=list(input().split()) n=int(nm[0]) m=int(nm[1]) board=[[0]*m for _ in range(n)] count=0 while count<n: num=input() for j in
數串——牛客刷題
拼接 public 最大整數 sys tint 比較 ont min 16px 題目描述: 設有n個正整數,將他們連接成一排,組成一個最大的多位整數。 如:n=3時,3個整數13,312,343,連成的最大整數為34331213。 如:n=4時,4個整數7,13,4,2
句子反轉——牛客刷題(java)
++ () ring system for 字母 ext style scan 題目描述: 給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi
牛客刷題day04
描述: 輸入一個整數,將這個整數以字串的形式逆序輸出 程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為100,則輸出為001 import java.util.Scanner; public class Main { public static void main(
牛客66題(8)跳臺階
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 假設有1階有1種方法; 假設有2階有2種方法; 假設有3階有(2,1),(1,2),(1,1,1)3種方法; 假設有4階(1,1,1,1)(2,1,1)(1,2,1
牛客66題(7)斐波那契數列
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39;斐波那契數列特徵為除第一項與第二項外其餘項均為前兩項的和。 class Solution { public: int Fibonacci(int n) {
牛客66題(6)旋轉陣列的最小數字
把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。 class Sol
牛客66題(5)用兩個棧來實現一個佇列
class Solution { public: void push(int node) { stack1.push(node); } int pop()
牛客66題(4)重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 /** * Definition for binary
牛客66題(3)從尾到頭列印連結串列
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。 思路:很簡單,設定一個棧,遍歷連結串列將連結串列依次壓棧,最後依次彈出。 class Solution { public: vector<int> printListFromTailToHead(L
牛客66題(2)替換空格
請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 class Solution { public: void replaceSpace(char *str,int length) {
牛客66題(1)二維陣列查詢
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 class Solution { public: bool Find(int target,