碎碎念:断更了,,,悲惨滴去写小组作业,悲惨滴去搞泡泡堂。
1.直线
python
from itertools import combinations
x = [i for i in range(20)]
y = [i for i in range(21)]
dots = [] # 坐标
for i in x:
for j in y:
dots.append([i,j])
two_dot = list(combinations(dots,2)) # 点两两组合成线
k_b = set() # 计算截距和斜率
for i in two_dot:
if i[0][0]-i[1][0] != 0:
tmp_k = (i[0][1]-i[1][1])/(i[0][0]-i[1][0])
tmp_b = (i[0][0]*i[1][1]-i[1][0]*i[0][1])/(i[0][0]-i[1][0]) # 注意b要这样算,,,
k_b.add((tmp_k,tmp_b))
print(len(k_b)+20) # 最后加上分母为0的情况,可以参考比较少的数字找规律
2.打家劫舍
python
"""
哇咔咔 写对了!忘记的不懂的统统去看k神解析!!
"""
class Solution:
def rob(self, nums: List[int]) -> int:
df = [0]*(len(nums)+1) # 动态表格,记录子问题的最优解(在此为第i个房子的最大打劫钱数)
df[1] = nums[0] # 初始化第一个房子!!
for i in range(1,len(df)-1):
df[i+1] = max(df[i], df[i-1]+nums[i]) # 核心!要打劫下一个房子or不打劫
return df[-1]