定义标记数组
used = [[0 for i in range(n)] for j in range(n)]
返回递归结果
print(dfs(0,0))
以上代码我调试过好多次也尝试了好多情况,都没有发现问题…但是提交代码却只能得到30分,而哪些错误解答都是解答错误,而不是运行超时。
===================================================================
套用快速排序模板, 调试过升序降序都是没有问题的
def quick_sort(nums,start,end,flag):
if start >= end:
return
left = start # 指向两边界位置
right = end
pivot = nums[right]
while left < right:
if flag: # 当flag=1时,该排序是升序排序
while left < right and nums[left] <= pivot: # 将大于中心点的元素放右边
left += 1
nums[right] = nums[left]
while left < right and nums[right] >= pivot:# 将小于中心点的元素放左边
right -= 1
nums[left] = nums[right]
else: # 降序排序
while left < right and nums[left] >= pivot:# 将大于中心点的元素放左边
left += 1
nums[right] = nums[left]
while left < right and nums[right] <= pivot:# 将小于中心点的元素放右边
right -= 1
nums[left] = nums[right]
nums[left] = pivot
quick_sort(nums,start,left-1,flag)
quick_sort(nums,left+1,end,flag)
n,m = map(int,input().split())
nums = [i for i in range(1,n+1)]
for i in range(m):
p,q = map(int,input().split())
if p: # 当p=1时,将q~n的所有元素升序排序,因为列表索引是从0开始的,所以都要减1
quick_sort(nums,q-1,n-1,p)
else: # 将1~q的所有元素降序排序
quick_sort(nums,0,q-1,p)
for i in nums:
print(i,end=" ")
0分,很难受
======================================================================
试题D:路径
最小公倍数LCM(least common multiple)的辗转相除法。10266837
def lcm(a,b):
if a > b:
a,b = b,a
mul = a * b
不断用大的数除以小的数取余数部分直到最后能够整除为止。
while a > 0:
a,b = b % a, a
return mul// b
target = 2021
dp= [[float(“inf”)] * (target+1) for i in range(target+1)] # 创建列表的两种写法
初始化状态
for i in range(1,23): # 1能到的最远距离是22,因为22 - 1不大于21,所以这里右区间是23
dp[1][i] = i # 1 与 n 的最小公倍数必定是 n
for i in range(2,target+1): # 填表
从第i个数开始只填绝对值小于21的部分,i前面的数无效不用考虑
for j in range(i,i+22):
当超出目标值2021时终止循环
if j > target:
break
当j等于i时,寻找节点1到节点i的最短路径总和
if j == i:
寻找前面21范围以内的数
for k in range(1,22):
if i - k > 0:
取最小值
dp[i][j] = min(dp[i][j],dp[i-k][j])
else:
break
一般情况下通过最小公倍数得出i到j的路径
else:
dp[i][j] = lcm(i,j)
因为当i等于j时存储就是的从节点1到节点i的最短路径总和,因此当target等于2021时
打印的应该就是从节点1到节点2021的最短路径总和才对,结果不是…
priget(dp[target][target])
【正确方案】
在第五十行代码中应添加上一节点到此节点的最短路径值,那么此时dp[i][j] 表示 从1节点到节点i的最短路径加上节点i到节点j的路径。
dp[i][j] = lcm(i,j) + dp[i][i]
=================================================================
====================================================================
010000
000100
001001
110000
以及所要求的迷宫
01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习