as
#!/usr/bin/env python
#encoding: utf-8
class
wisdom(object):
def__init__
(self,n,g):
self.n =n
self.g =g
def dist(self): #
所有可能分配方案
if self.n == 1:
yield
[self.g]
return
for i in range(self.g, -1, -1):#
步長-1 遞減
for d in wisdom(self.n-1, self.g-i).dist():
yield [i] +d
def solve(self):#
最優方案
d ={}
if self.n in
d:
return
d[self.n]
for d in wisdom(self.n,self.g).dist():#
遍歷所有方案
if sum(pirates_vote(d,i).vote() for i in range(self.n)) > self.n/2:
d[self.n] =d
return
d d[self.n] =none
return
none
class pirates_vote(wisdom): #
返回值為海盜是否支援,1:支援 0:反對;
def__init__(self,plan,num): #
支援與反對的判斷條件是 plan 與 自己在方案中的位置;
self.num = num #
num表示在自己之後是否還有其他海盜
self.plan = plan #
方案 是乙個有序的list
defvote(self):
n = len(self.plan) #
該方案一共多少人
if self.num ==0:
return 1
while wisdom(n-1,10).solve() ==none:
n -= 1self.num -= 1
if self.num <=0:
return 1
if wisdom(n-1,100).solve()[self.num-1] >=self.plan[self.num]:
return 0 #
如果下乙個方案錢多,我就不支援這個方案
return 1llbb = wisdom(5,10)
(list(llbb.dist()))
(type(llbb.dist()))
print(llbb.solve())
as
Day6列表作業
1.生成50 300之間可重複的 10個資料 存放於列表中,保證列表中元素的順序,對列表進行排重,並對列表使用排序演算法進行降序排序 例如 隨機生成了 70,88,91,70,107,234,91,177,282,197 去重之後 70,88,91,107,234,177,282,197 降序排序 ...
上課記錄 Day6
html css和bootstrap框架的關係是什麼 下列 布局合理嗎?不合理的話,應該怎麼改進 不合理 名字跟暱稱應該各分為一塊 名字 暱稱 絕對路徑和相對路徑的差別是什麼 col md 6 col xs 6這兩個類分別表示什麼含義 col md push 6 col md offset 6 co...
Day6 快速排序
快速排序 快速排序使用分治的策略來把乙個序列為兩個子串行。快速排序又是一種分而治之思想在排序演算法上的典型應用。本質上來看,快速排序應該算是在氣泡排序基礎上的遞迴分治法。1.首先從數列中挑出乙個元素,稱為 基準 2.接著重新將數列排序,所有比基準小的元素擺放在基準的前面,所有比基準大的數都排在基準的...