Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
671dc71c24 |
|
|
@ -0,0 +1,19 @@
|
|||
# N件物品,一个容量为V的背包
|
||||
N, V = map(int, input().split())
|
||||
weight = []
|
||||
val = []
|
||||
|
||||
for _ in range(N):
|
||||
wi, vi = map(int, input().split())
|
||||
weight.append(wi)
|
||||
val.append(vi)
|
||||
|
||||
dp = [[0]*(V+1) for _ in range(N+1)]
|
||||
|
||||
for i in range(1, N+1):
|
||||
for w in range(1, V+1):
|
||||
dp[i][w] = dp[i-1][w]
|
||||
if w-weight[i-1] >= 0:
|
||||
dp[i][w] = max(dp[i][w], dp[i-1][w-weight[i-1]]+val[i-1])
|
||||
|
||||
print(dp[N][V])
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
m = eval(input('可承载的最大重量:'))
|
||||
h = eval(input('宝物重量:'))
|
||||
v = eval(input('宝物价值:'))
|
||||
|
||||
# 计算权重, 整合得到一个数组
|
||||
arr = [(i, v[i] / h[i], h[i], v[i]) for i in range(len(h))]
|
||||
|
||||
# 按照list中的权重,从大到小排序
|
||||
arr.sort(key=lambda x: x[1], reverse=True) # list.sort() list排序函数
|
||||
|
||||
bagVal = 0
|
||||
bagList = []
|
||||
for i, w, h, v in arr:
|
||||
# 1 如果能放的下宝物,那就把宝物全放进去
|
||||
if w <= m:
|
||||
m -= h
|
||||
bagVal += v
|
||||
bagList.append(i)
|
||||
|
||||
# 2 如果宝物不能完全放下,考虑放入部分宝物
|
||||
else:
|
||||
bagVal += m * w
|
||||
bagList.append(i)
|
||||
break
|
||||
|
||||
print('\n排序后:', arr)
|
||||
print('能运走的最大价值:%.2f' % bagVal, '此时承载的宝物有:', bagList)
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
def coin_amount(c):
|
||||
table = [0, c[0]] # 开头放一个0以便直接进行比较
|
||||
for i in range(2, len(c) + 1):
|
||||
table.append(max(table[i - 2] + c[i - 1], table[i - 1]))
|
||||
return table
|
||||
|
||||
|
||||
def back(table, c):
|
||||
collected_coins = []
|
||||
lent = len(table) - 1
|
||||
i = lent
|
||||
while i >= 1:
|
||||
if table[i] > table[i - 1]: # 选最后一个
|
||||
collected_coins.append(c[i - 1])
|
||||
i -= 2
|
||||
else:
|
||||
i -= 1
|
||||
return collected_coins
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
c = [5, 1, 2, 10, 6, 2]
|
||||
temp = coin_amount(c)
|
||||
collected_coins = back(temp, c)
|
||||
print("动态规划表:")
|
||||
print(temp)
|
||||
print("最大序列:")
|
||||
print(collected_coins[::-1])
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
def inverse_ordinal_numbers(arr):
|
||||
n = len(arr)
|
||||
if n <= 1:
|
||||
return 0, arr
|
||||
|
||||
mid = n // 2
|
||||
|
||||
inverse_l, arr_l = inverse_ordinal_numbers(arr[:mid])
|
||||
inverse_r, arr_r = inverse_ordinal_numbers(arr[mid:])
|
||||
|
||||
nl, nr = len(arr_l), len(arr_r)
|
||||
|
||||
arr_l.append(9223372036854775807)
|
||||
arr_r.append(9223372036854775807)
|
||||
|
||||
i, j = 0, 0
|
||||
new_arr = []
|
||||
|
||||
inverse = inverse_l + inverse_r
|
||||
|
||||
while i < nl or j < nr:
|
||||
if arr_l[i] <= arr_r[j]:
|
||||
inverse += j
|
||||
new_arr.append(arr_l[i])
|
||||
i += 1
|
||||
else:
|
||||
new_arr.append(arr_r[j])
|
||||
j += 1
|
||||
return inverse, new_arr
|
||||
|
||||
|
||||
a = [1, 2, 3, 4, 5, 6, 5, 7, 8, 2, 9, 1]
|
||||
print(inverse_ordinal_numbers(a))
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# HelloWorld
|
||||
|
||||
#### Description
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Contribution
|
||||
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# HelloWorld
|
||||
|
||||
#### 介绍
|
||||
{**以下是 Gitee 平台说明,您可以替换此简介**
|
||||
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
|
||||
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
|
||||
|
||||
#### 软件架构
|
||||
软件架构说明
|
||||
|
||||
|
||||
#### 安装教程
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 使用说明
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 参与贡献
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 新建 Feat_xxx 分支
|
||||
3. 提交代码
|
||||
4. 新建 Pull Request
|
||||
|
||||
|
||||
#### 特技
|
||||
|
||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
|
||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
|
||||
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
|
||||
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
||||
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
dividing_number = {0: 0}
|
||||
times = 0
|
||||
|
||||
|
||||
def split(number, index):
|
||||
global times
|
||||
for i in range(1, number + 1):
|
||||
if i >= dividing_number[index - 1]:
|
||||
dividing_number[index] = i
|
||||
number_rest = number - i
|
||||
if number_rest == 0:
|
||||
for j in range(1, index):
|
||||
print(str(dividing_number[j]) + '+', end='')
|
||||
print(str(dividing_number[index]))
|
||||
times = times + 1
|
||||
else:
|
||||
split(number_rest, index + 1)
|
||||
|
||||
|
||||
n = int(input("请输入一个整数:"))
|
||||
split(n, 1)
|
||||
print("所以该整数的划分数为:%d" % times)
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
for i in range(10, 1, -1):
|
||||
print(i)
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
p = [30, 35, 15, 5, 10, 20, 25]
|
||||
N = len(p) - 1
|
||||
m = [[0 for _ in range(0, N)] for _ in range(0, N)]
|
||||
s = [[0 for _ in range(0, N)] for _ in range(0, N)]
|
||||
|
||||
|
||||
def matrix(n):
|
||||
for r in range(2, n):
|
||||
for i in range(1, n - r + 1):
|
||||
j = i + r - 1
|
||||
m[i][j] = m[i + 1][j] + p[i - 1] * p[i] * p[j]
|
||||
s[i][j] = i
|
||||
for k in range(i + 1, j):
|
||||
t = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j]
|
||||
if t < m[i][j]:
|
||||
m[i][j] = t
|
||||
s[i][j] = k
|
||||
|
||||
|
||||
def cout(i, j):
|
||||
if i == j:
|
||||
print('A[', i, ']', end=' ')
|
||||
return
|
||||
print('(', end=' ')
|
||||
cout(i, s[i][j])
|
||||
cout(s[i][j] + 1, j) # 递归1到s[1][j]
|
||||
print(')', end=' ')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
matrix(N)
|
||||
for i in m[1:]:
|
||||
print(i[1:])
|
||||
cout(1, N - 1)
|
||||
|
||||
Loading…
Reference in New Issue