Day 6作業 模擬人生

2022-08-18 10:24:12 字數 1494 閱讀 7083

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)

print

(list(llbb.dist()))

print

(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.接著重新將數列排序,所有比基準小的元素擺放在基準的前面,所有比基準大的數都排在基準的...