
算法
文章平均质量分 96
CodingFishzhi
物联网/人工智能
展开
-
2020十一届蓝桥杯省赛Python组网络分析代码
题目说的是给1到n个节点,给出m条操作,如果 为 1 a b的形式,则表示将 a b用网线连接起来,这样a b就可以互相通信了,如果 为 1 p t的形式,则表示p节点发送一个数据,此时这个数据会在网络中传播开来,直至传播到网络中的所有节点,节点接收到数据后会进行存储,且不会接收重复数据,问经过m条操作以后,各个节点的数据量是多少:思路:根据输入操作的不同进行判断,如果是1开头的操作,则对应节点连接起来,如果是重复节点则不进行操作如果是2开头的操作,则进行一遍深度优先搜索或者宽度优先搜索,并且更新节点的原创 2020-07-05 18:03:06 · 1287 阅读 · 2 评论 -
通俗易懂地讲解《并查集》
本文著作权为本人所有,转载请注明出处。正文:谈到并查集,我只想感叹一句:“你只看见我渺小的身躯,却没有看到我心中的那片森林。”这,就是并查集思想最精妙之处.理解下面三句话,并查集就学会了:“并”的意思是把两个处在同一个连通分量的结点给并到一起.“查”的意思是查找一个结点的根节点.“并”的时候需要用到“查”步骤:1.查(“查”的意思是查找一个结点的根节点.)初始...原创 2020-04-05 15:09:25 · 489 阅读 · 1 评论 -
2n皇后的两种解法 python(全面解析),第二种耗时大大缩短
题目两种思路思路一:同时放黑皇后和白皇后思路二:放完黑皇后以后,再放白皇后第一种解法(耗时较长)同时考虑黑皇后和白皇后考虑index行,分三步:在index行放置黑皇后在index行放置白皇后递归,在index+1重复上述操作递归结束条件 index == n代码from collections import defaultdictn = int(input())...原创 2020-03-29 12:25:59 · 6580 阅读 · 7 评论 -
python n皇后问题
题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,“…...原创 2020-03-28 23:28:03 · 505 阅读 · 0 评论 -
python实现整数反转
class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ if x == 0: return 0 flag = 0 if x < 0: ...原创 2020-03-27 20:37:41 · 1791 阅读 · 0 评论 -
python 默认字典(defaultdic)在动态规划中的应用
题目使用最小花费爬楼梯数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cos...原创 2020-03-27 20:01:18 · 315 阅读 · 0 评论 -
bfs和dfs在python中有更好的实现方法!
如何利用python的特点实现bfs和dfs在dfs和bfs中,通常需要标记已经访问过的结点,一般的做法是建立一个vis数组,然后初始化全部为0,若访问过,则标记为1但是在python中,我们可以利用defaultdic做标记比如我们要对(1,2)这个点做标记,直接使用:vis = defaultdict(bool)vis[(i, j)] = True这样就直接标记了,根本不需要生成...原创 2020-03-27 17:56:11 · 1155 阅读 · 0 评论 -
深度优先搜索(BFS)模板 python
BFS的标准套路:for head in all_node()if head 没有visited过 # 以上两步是为了防止有孤立的部分存在而被遗漏,如果没有孤立的部分可以不写,直接放queue里一个就开始循环即可 queue.append(head) mark head # 主干部分 while queue is not empty: cu...转载 2020-03-25 17:32:23 · 849 阅读 · 1 评论 -
蓝桥杯题解 十字图 python 计蒜客
代码:n = int(input())row = 4 * n + 5x = 0y = 0graph = [["." for j in range(row)] for i in range(row)]for k in range(n + 1): for j in range(y+2, 4 * n + 5 - (y+2)): graph[x][j] = "$"...原创 2020-02-27 13:22:26 · 290 阅读 · 0 评论 -
计蒜客 快速提升代码能力 python题解
2020 python 蓝桥杯 计蒜客习题解答鉴于python的题解没有,故分享给大家,方便准备此次蓝桥杯python组第一部分 《快速提升代码能力》1.a + b 问题代码:N = int(input())for i in range(N): a, b = list(map(int, input().split())) print(a + b)2.斐波那契数列...原创 2020-02-25 17:45:16 · 431 阅读 · 0 评论 -
2016年蓝桥杯A组 第六题 寒假作业(python实现)
(python实现)2016年蓝桥杯A组 第六题 寒假作业【问题描述】现在小学的数学题目也不是那么好玩的。看看这个寒假作业:每个方块代表1~13中的某一个数字,但不能重复。比如:6 + 7 = 139 - 8 = 13 * 4 = 1210 / 2 = 5以及:7 + 6 = 139 - 8 = 13 * 4 = 1210 / 2 = 5就算两种解法。(加法,乘法...原创 2020-02-21 23:26:07 · 309 阅读 · 0 评论 -
python 并查集代码
class UnionFind(object): """并查集类""" def __init__(self, n): """长度为n的并查集""" self.uf = [-1 for i in range(n + 1)] # 列表0位置空出 self.sets_count = n # 判断并查集里集合的数量 def fi...原创 2020-02-20 21:48:12 · 678 阅读 · 0 评论 -
用一道题学习怎么写递归
二叉树的层序遍历-(leetcode101-对称二叉树)点开这里的朋友不妨关注一下公众号“一个直男的救赎之路”,获取更多实用咨询。公众号主要分享的知识包括:人工智能,计算机视觉,算法,编程语言学习(python,java,c/c++),大学生竞赛,学习方法心得,好书推荐等,欢迎您一起交流和学习。公众号也会经常分享一些优质资源和教学视频,电子书等。搜索“一个直男的救赎之路”,也可以扫描下方的...原创 2020-02-16 14:48:26 · 233 阅读 · 0 评论 -
买股票的最佳时机(动态规划python实现)
买股票的最佳时机(动态规划python实现)关注公众号“一个直男的救赎之路”,获取更多python算法咨询!!!给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票...原创 2020-02-14 23:20:10 · 1180 阅读 · 0 评论 -
创建堆,向堆中插入数据(c++)树形显示
main.cpp#include<stdio.h>#include<iostream>#include<ctime>#include<cassert>#include<algorithm>using namespace std;//1.创建堆//2.向堆中添加元素 //template <typename Ite...原创 2019-11-20 22:59:58 · 730 阅读 · 0 评论 -
创建堆的数据结构(C++)
堆堆是一种数据结构,一般用数组的形式创建,数组的下标从1开始。堆满足两点要求:1.是一棵完全二叉树2.父节点的值比子节点的值大c++代码实现main.cpp#include<stdio.h>#include<iostream>using namespace std;template <typename item>class MaxHeap...原创 2019-11-20 20:44:12 · 338 阅读 · 0 评论 -
acm入门必备基本数学定理
1.欧几里得算法求最大公约数def gcd(a,b): if b == 0: return a return gcd(b,a%b)2.筛法求素数def pr01(): ls = [] for i in range(1,101): ls.append(i) for i in ls: for j in l...原创 2019-10-12 23:44:43 · 228 阅读 · 0 评论 -
寻找局部最高点-python实现(迭代+递归)
题目:寻找局部最高点-python实现列表:array[1,7,6,5,3,7,4],找出任意一个局部最高点且array[-1] = array[n] = 负无穷方法:从中间位置开始 middle = middle = int((min + max) / 2)有三种情况:1.中间为局部最高点: self.array[middle-1]<self.array[middle] and...原创 2019-09-11 15:55:55 · 3852 阅读 · 0 评论 -
算法设计与分析(python)第二章代码2.9-求子集和-代码解析
1.Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充02.zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。3.bin() 返回一个整数 int 或者长整数 long int 的二进制表示。4.filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表filter(f...原创 2019-09-20 18:09:04 · 453 阅读 · 0 评论 -
python算法笔记--二叉树的实现
一、二叉树初始化#节点class Node: def __init__(self,key): self.key = key self.right = None self.left = None#树class AVL_tree: def __init__(self,root): self.root = root...原创 2019-09-21 22:19:53 · 163 阅读 · 0 评论 -
反转链表(python)代码详细解释--leetcode
1.代码class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: cur = head pre...原创 2019-09-29 18:10:14 · 743 阅读 · 0 评论 -
python判断回文数的两种方法--字符串和数字
1.转字符串class Solution: def isPalindrome(self, x: int) -> bool: x = str(x) lenth = len(x) for i in range(0,lenth//2): if x[i] != x[lenth-i-1]: ...原创 2019-09-29 22:18:32 · 1121 阅读 · 0 评论 -
算法设计与分析-文档比较-代码解析
mport sysimport math#读取文件,L是字符串列表def read_file(filename): try: fp = open(filename) L = fp.readlines() return L except IOError: print("error opening or readin...原创 2019-10-10 12:17:15 · 690 阅读 · 0 评论