
算法
cnpll
弟弟本人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快慢指针_用来判断是否存在环路、环的节点、环的长度等
是否存在环路可以想做是两个人在环形跑道上,跑的快的迟早会将跑的慢的套圈(这是存在环路)即fast=fast->next->next,slow=slow->next,如果最终fast=slow则存在环路例题:环路节点当我们确定有环路时,另fast=head此时令fast = fast->next;slow = slow->next;两个相遇时就是环路入口code/** * Definition for singly-linked list. * st原创 2020-07-29 00:06:58 · 308 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2)——B.Sequential Nim
首先读完题目的第一感受是这是一个博弈论的题目,有点想法其。但是考虑到这个比赛难度,他不会出太难的,所以就进行了尝试思路这个就是简单的博弈主动权掌握在第一个碰到大于1的数的人手中,它可以通过全拿走或者剩余1个来控制剩下的节奏,从而获得比赛胜利#include<bits/stdc++.h>using namespace std;#define ll long long int main(void){ int t; cin>>t; ll int a[100000.原创 2020-07-22 15:12:29 · 151 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2)——B. Omkar and Last Class of Math
题目链接大概意思是:将输入的数n分解为a+b,但要求LCM(a,b)最小题解思路n%2==0 即n为偶数则a=b=n/2,此时LCM(a,b)=n/2取得最小n%2!=0 即n为奇数且非质数这个则需要找到n的最大公约数(通过 n/最小公约数 )a=n/最小公约数,b=n-最大公约数,LCM(a,b)=b如果为质数a =1,b=n-1,LCM(a,b)=b#include<bits/stdc++.h>using namespace std;i原创 2020-07-13 11:45:55 · 141 阅读 · 0 评论 -
交换两个整形变量a,b的值
思路:引入中间变量tmp使用异或运算不借助零时变量Java1、引入终间变量tmppublic static void swap( int a,int b ) { System.out.println("交换前:"+a+","+b); int tmp = a; a = b; b = tmp; System.out.println("交换后:"+a+","+b);}2...原创 2019-12-11 11:34:54 · 1002 阅读 · 0 评论 -
交换两个变量 a、b
交换两个变量 a b首先想到的方法就是,引入第三个变量tmp;#include<stdio.h>int main(){ int a,b,tmp; scanf("%d,%d",&a,&b); tmp=a; a=b; b=tmp; printf("%d %d",a,b); return 0;}当然还有其他的方法,如果只想使用两个变量呢?方法1:...原创 2019-09-28 15:48:38 · 295 阅读 · 0 评论 -
HDU 2084 数塔DP
题目链接解题思路:从最顶层或者最底层出发,推到最底层或者最顶层,然后找出其中那条路线的值最大我才用的是从下往上,代码如下#include <stdio.h>#include <string.h>int main(){ int d[103]; int a[103][103]; int c, n, i, j; /*c是测试用例个数...原创 2019-09-16 22:15:03 · 176 阅读 · 0 评论 -
冒泡排序及优化——python实现
一句话说,冒泡排序,就是 两两比较然后最大的后移,最终形成一个有序的数列,从整个流程看就像泡泡往上冒,所以叫做冒泡排序def bubble_sort(array): if len(array)<2: return array else: n = len(array) for i in range(0,n-1): ...原创 2019-09-04 19:34:47 · 208 阅读 · 0 评论 -
python实现Dijkstra(狄克斯特拉算法)——解决边权为正的加权图的最短路径问题
狄克斯特拉算法思路:找到未被处理的节点获取距离起点最近的节点,更新其邻居的开销如果有邻居的开销被更新,那么同时更新其父节点将其标记为已经处理过,然后继续处理那些未被处理过的节点#BFS查找两点之间的最短路径,解决的“段数”最少#Dijkstra 狄克斯特拉算法解决的是总权重最小的路径,一般解决加权图中的最短路径问题#这个算法只适用于有向无环图,而且只能用于边权为正的图,不能用...原创 2019-08-10 11:49:29 · 1299 阅读 · 0 评论 -
python 实现BFS(广度优先搜索),DFS(深度优先搜索)
BFS思路:利用队列实现创建一个空队列,加入首节点的拓展新建一个空列表,用于后边的判重如果没用重复,然后比对,符合返回,不符合加到队列尾部遍历完所有队列数据,如果没有符合的,返回Falsefrom collections import dequedef search(name):#广度优先搜索(BFS) #deque()函数创建一个双端队列(先进先出) #注意d...原创 2019-08-09 17:21:22 · 3257 阅读 · 0 评论 -
python实现快排,选择排序
选择排序#O(n**2)#找到列表元素的最小值,以及索引值def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range (1,len(arr)): if smallest > arr[i]: smallest = arr[i] ...原创 2019-08-08 21:23:58 · 222 阅读 · 0 评论