程序设计与算法(二)算法基础
学习笔记:程序设计与算法(二)算法基础
Mikchy
一名在校学生,喜爱编程,希望自己的理解可以帮助到其他人,同时也希望可以结交到朋友
展开
-
【学习笔记】第一周:枚举
学习视频链接:程序设计与算法(二)算法基础(北京大学) 第一周:枚举 枚举,就是将所有可能性都扫一遍,然后看那种可能符合要求,那就是我们要的答案 枚举一般也是暴力搜索,一般要很考虑时间复杂度,以免超时。 因此在使用枚举的方法的时候,要看是否会超时,若超时,则不能使用枚举方法。 有些题目的枚举,可以确定“局部”,从而尽可能的减少枚举的范围,避免超时的可能。 例题1:完美立方 ...原创 2018-08-24 16:07:50 · 245 阅读 · 0 评论 -
【学习笔记】第一周测试(枚举)
题目1:特殊密码锁 描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。 然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。 当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。 输入...原创 2018-08-24 22:32:34 · 315 阅读 · 0 评论 -
【学习笔记】第二周:递归(一)
学习视频链接:程序设计与算法(二)算法基础(北京大学) 第二周:递归 何为递归:在调用函数中继续调用该函数。 递归一般解决三个问题: 一、替代多重循环(不过有时候也用多重循环替代递归),特别是在多重循环的重数未知的时候 二、解决本身就是递归形式的问题 三、将一个大问题分解为小问题进行求解 递归需要注意的就是,一定要找对“边界条件”,否则会造成栈溢出(数组范围过大或者递归无结束)...原创 2018-09-04 15:42:03 · 177 阅读 · 0 评论 -
【学习笔记】第二周测试(递归)
题目1:全排列 题目链接: https://vjudge.net/problem/OpenJ_Bailian-2748 分析: 其实和N皇后问题有点像 主要就是认为:我们对一个字符串,进行从0 到 len-1 枚举放给另一个字符串,然后输出 所以也还是一个函数,void arrange(int k) 对第k个字符进行选择放入,那么这个放入有0 到 len-1 共 len 种可能,那我...原创 2018-09-04 16:05:45 · 209 阅读 · 0 评论