程序设计与算法(二)算法基础
学习笔记:程序设计与算法(二)算法基础
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 评论