Compare commits

...

1 Commits

Author SHA1 Message Date
Silence 671dc71c24 testcode 2022-06-08 12:05:02 +08:00
10 changed files with 241 additions and 0 deletions

19
testcode/0_1Package_dp.py Normal file
View File

@ -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])

27
testcode/0_1Package_ga.py Normal file
View File

@ -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)

28
testcode/Coin.py Normal file
View File

@ -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
testcode/GE_DP.py Normal file
View File

33
testcode/Inverse.py Normal file
View File

@ -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))

36
testcode/README.en.md Normal file
View File

@ -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/)

39
testcode/README.md Normal file
View File

@ -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/)

22
testcode/Split.py Normal file
View File

@ -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)

2
testcode/Test.py Normal file
View File

@ -0,0 +1,2 @@
for i in range(10, 1, -1):
print(i)

35
testcode/small_MQ.py Normal file
View File

@ -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)