笔记
每次AC都是一个进步
这个作者很懒,什么都没留下…
展开
-
【基本算法】【递归篇】取盘子
题目:将n个不同的小球,放在m个相同的盘子上。要求每个盘子上都必须有小球,且满足0<m<n<=20。输出最后方法数。 分析:我们可以先考虑先放n-1个小球的情况,再放第n个小球。那么我们可以分成两种情况:1.第n个小球不单独在一个盘子上。2.第n个小球单独在一个盘子上。我们不妨用dep[n][m]代表将n个小球放在m个盘子上的方法数。 递归设计:由上可以得出递归表达式:dep[n][m]=dep[n-1][m]*m+dep[n-1][m] 同时它的递归出口应该是:n=m||m=1时。 ps原创 2021-12-02 12:30:25 · 697 阅读 · 0 评论 -
【基本算法】总序
参考书目:《acm-icpc基本算法》 前述:基本算法虽然说基础但是却是无数竞赛算法和数据结构的基本单元,有时也是解题的思路切入点,所以务实好这块的学习是非常有必要的。 内容:该书讲述了十个基本算法——求值法,递推法,递归法,枚举法,模拟法,分治法,贪心法,回溯法,构造法,动态规划法。因为求值法和构造法的概念范围太广,在专题结束最后会给一篇文章粗略的阐述。至于其他的重要算法(递归法,分治法,贪心法,回溯法,动态规划法)我会进行着重的讲述。 ...原创 2021-12-02 12:21:06 · 413 阅读 · 0 评论 -
【二分快速幂】
#include<stdio.h> #define MOD 1000000009 long long binaryPow(long long); long long twopowmod(long long); int main(void){ long long n,i,j,l,ans; while(1){ scanf("%d",&n); i=binaryPow(n);//指数部分取余 j=twopowmod(n+1);//二次幂部分取余 l=(2*(n+1...原创 2021-10-30 21:44:11 · 94 阅读 · 0 评论 -
【回溯篇】【困难】leetcode第51题 n皇后问题
题目 n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。 每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 示例 1: 输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释:如上图所示,4 皇后问题存在两个不同的解法。 ...原创 2021-10-23 15:31:22 · 119 阅读 · 0 评论 -
【排序篇】【简单】leetcode第88题 合并两个有序数组
题目 给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 =.原创 2021-10-20 21:28:12 · 225 阅读 · 0 评论 -
CSDN初发贴的一些前述
本人身份为一名初入计算机的大一小白,目前拥有技能为:c语言基础语法、一些基本的算法与数据结构理论。但在鉴于自身代码量过少,往后一段时间的重心会放在算法相关的编程题训练中。这也是我决定开始在CSDN上发布博客的原因。在接下来的时间里,我的博客将着重记载自己的一些刷题感悟和成长过程。 刷题网站:暂时为leetcode 刷题路线:排序->栈->队列->链表->树->堆->图;中间也会夹杂着一些递归,动态规划法之类的算法应用和解析。(上述路线会在后期慢慢调整) 月成长篇:我原创 2021-10-20 11:15:17 · 76 阅读 · 0 评论