
python算法
PYTHON算法实现
江浙沪小有名气的男子
这个作者很懒,什么都没留下…
展开
-
巧妙求和
巧妙求和多次在(start,end)闭区间内加1,如何快速求最后结果每次在start-1处+1,在end处-1(因为数组前移一位,实际为起点处+1,终点后一位处-1),最后结果可以通过当前位置以前的数字求和得到def func(): n, m = map(int, input().strip().split()) res = [0]*n for i in range(m): start, end = map(int, input().strip().split(原创 2021-03-22 15:49:58 · 130 阅读 · 0 评论 -
一个字符串内无连续重复子串
无连续重复子串DFS创造字符串,要注意创造前后进入不同分支时保持字符串内容的clean,不要被其他分支的改动影响,当达到指定长度时,判断这个字符串是否包含相邻子串。def compare(s): s = "".join(s) for i in range(1, len(s)//2+1): for j in range(len(s)): if s[j:j+i] == s[j+i:j+i+i]: return False原创 2021-03-12 10:48:36 · 611 阅读 · 0 评论 -
MOD
给定两数字m,n,求m的所有位数字对n的所有位数字求模的和from collections import Counterdef func(): rounds = int(input()) for i in range(rounds): m = Counter(input()) n = Counter(input()) m_key = list(m) n_key = list(n) sum = 0原创 2021-03-11 10:34:02 · 134 阅读 · 0 评论 -
n选m
思路从1遍历到n,对于一个数字要么选要么不选,拿到m个数时停止def dfs(i, n, m, res): if len(res) == m: print(" ".join(map(str, res))) else: if i <= n: res.append(i) dfs(i+1, n, m, res) res.pop() dfs(i+1, n, m,原创 2021-03-10 15:48:47 · 172 阅读 · 0 评论 -
python 按字典序全排列实现
python 按字典序全排列递归实现代码:def swap(num, i, j): for x in range(j, i, -1): tmp = num[x] num[x] = num[x-1] num[x-1] = tmpdef swapback(num, i, j): for x in range(i, j): tmp = num[x] num[x] = num[x+1] num[x原创 2021-03-09 11:18:47 · 1622 阅读 · 2 评论