- 博客(4)
- 收藏
- 关注
原创 求逆序对数量
逆序对:一串数如果不是逐个递增,而是后面的数大于前面的数,则这两个数构成一个逆序对,例如213,2和1,1和3构成两个逆序对。求法:以归并排序为基础,如果不了解归并排序,可以回顾一下周周之前的博客。总共三种情况:左左,右右,左右。1.2两种情况可以看成缩小范围版的第3种情况,第3种情况的原理是:左半边L,右半边R,在R中第一个能与L中的数构成逆序对的数量为s1,直到把R取完有s1+s2+s3……+sm,如何快速算出s1加到sm需要用到归并排序,在L中有个指针i,R中有个指针j,分别从前往后指,每次把
2021-12-12 21:04:09 602
原创 Nim游戏算法介绍
周周给大家简单介绍一下基础nim博弈游戏原理以及代码实现。我们先来了解一下公平组合游戏,它满足:1.两名玩家交替进行。2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关。3.不能移动的玩家判负。nim游戏属于公平组合游戏,来看到一道例题:给定n堆石子,两位玩家轮流操作,每次可以从任意一堆石子中取出任意数量的石子,最后算无法操作的人失败。原理分析:我们先来看一个最简单的样例,假如有两堆石子,一堆2个石子,另一堆3个石子,此时甲先手,甲可以先拿走1个石子,共有2堆石子,每堆都有2个石子,
2021-12-08 22:05:11 3871
原创 归并排序算法
归并排序算法也算大家常用的一种方法,萌新周周在这里用C语言给大家简单总结一下归并排序算法吧。关键:分治。原理步骤:1.确定分界点,找下标的中间值 2.递归排序right和left 3.归并合二为一,其中第三个步骤是关键。废话不多说,直接放代码吧,重要细节都有注释:#include <iostream>using namespace std;const int N=1000010;int n;int q[N],tmp[N];void merge_sort(int q
2021-12-06 20:29:56 630
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人