- 博客(225)
- 收藏
- 关注
原创 基本算法之深搜:223.棋盘问题
这道题是深搜经典题,要理解为什么在for循环后要递归,是因为for循环搜索了当前行的所有列的情况,要搜索下一行所以要加一行递归
2020-05-10 23:11:08
434
原创 基本算法之递推:222.山区建小学
使用f[i][j]表示距离之和,如果在每个村庄都建一个小学,则距离为0,是递推的边界条件也即f[i][i]=0。一段区间内所有点到某个地方距离最短的话,那么那个点一定在这个区间的中点。s[i][j]表示,从编号为i的村庄到编号为j的村庄之间只建一个小学的最短距离。状态转移方程f[i][j]=f[k-1][j-1]+s[k][j],在决策建新学校之前,已经在1-k中间见了j-1个学校,其中k区间是j-i。
2020-04-20 14:53:09
734
原创 基本算法之递推:219.判断整除
测试链接总时间限制: 1000ms 内存限制: 65536kB描述一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列:(+1) + (+2) + (+4) = 7(+1) + (+2) + (-4) = -1(+1) + (-2) + (+4) = 3(+1) + (-2) + (-4) = -5(-1) + (+2) + (+...
2020-04-19 22:59:36
844
原创 基本算法之搜索:217.八皇后问题
a[i]=j数组是放置皇后,i对应行,j代表列,b代表1列只能有1个皇后;w[i+j]代表/斜对角的行列之和相同,m[i-j+7]是\对角线的行列之差相同,+7是没有负值的数组
2020-04-18 22:17:54
141
原创 基本算法之枚举.211.拨钟问题
每次操作,会将若干个时钟转动90度。所以当同一个操作进行4次,其实就是转了360度,相当于没有操作。所以每种操作使用次数为:0,1,2,3。一共有9种操作,所以可能的操作种类一共是49 4^{9}4 9 。只需对3个操作进行枚举,其他6个操作可以根据约束条件算出。比如,A位置,操作 1,2,4中含A对A有影响。我们将操作次数和当前值求和,用4取模,如果等于0则说明符合条件
2020-04-14 18:03:08
197
原创 基本算法之枚举:197.比赛排名
这道题是一个枚举各种可能先做5个循环,把条件冲突的找出来,a说E是第一,那么E说的应该就对,但E说D是第一,肯定a,e不是第一和第二,e也不是第三,假设条件限制后,则有a,b,c,d,e.互补相等
2020-04-09 15:53:56
707
原创 NOIP学习之递推:196.PKU2506Tiling
设f(n)表示铺满n列走道的方法数。f(1)=1,f(2)=3;当n>3时,1*2横放,有f(n-2)种,1*2竖放,有f(n-1)种,2*2铺,有f(n-2)种,所以 f(n)=f(n-1)+2*f(n-2),这是递推关系式。另外,数据量比较大,要用高精度加法来实现。
2020-04-08 11:26:32
242
原创 NOIP学习之递归:190.扩号匹配问题
没有用栈来做,首先发现'(',做标记‘$’,如果发现’)',则递归向前寻找’$‘,如果找到就将返回的字符位置改成空格,否则就将当前标记为’?‘
2020-04-06 19:55:03
260
原创 NOIP学习之递归:189.2的幂次方表示
首先将整数转换位二进制数,找出1的位就是要进行2的幂次的数,判断如果幂的值大于2,那么就要对幂进行二进制转换,再递归输出
2020-04-04 20:38:37
228
原创 NOIP学习之递归:188.全排列
1.这道全排列题特别好去理解递归调用,也就是递和归2条路径,以abc为例,首先是将输入字符串和输出字符串做分离,我觉得不用字符交换更利于理解这道题,也就是说输出字符的字母顺序始终变化,而输入字符保持不变;2.先输出abc,将被递归进的2个b和c回溯,a位置不动,根据返回顺序,有的像堆栈,先进后出c和b进行交换,再进行回溯,这时候回溯包括第一个字符a
2020-04-04 20:06:19
321
原创 NOIP学习之递归:185.逆波兰表达式
例如输入+ 5 3,第一个为+,所以进入exp(),输入的数为5,由于不是‘+-*/’,所以返回int型的5,前面+号右边的输入为3,道理如上,所以返回int 3,一起返回,到5+3=8;
2020-03-30 22:03:29
127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人