【算法】二叉搜索树

j=j<<1不同于j<<1,后者j本身不发生变化
^表示异或,pow表示乘方

字典序算法

https://algorithm.yuanbin.me/zh-hans/math_and_bit_manipulation/unique_binary_search_trees.html

[穷竭搜索]Palindrome Partitioning http://www.lintcode.com/en/problem/palindrome-partitioning/
https://leetcode.com/problems/combinations/description/
注意递归循环的建立和剪枝函数的使用位置:上两例是一个不错的模板
模板:这里写图片描述

动态规划

动态规划问题中一般从以下四个角度考虑:

状态(State)
状态间的转移方程(Function)
状态的初始化(Initialization)
返回结果(Answer)
动规适用的情形:

最大值/最小值
有无可行解
求方案个数(如果需要列出所有方案,则一定不是动规,因为全部方案为指数级别复杂度,所有方案需要列出时往往用递归)
给出的数据不可随便调整位置

Climbing Stairs
Question

lintcode: (111) Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps.
In how many distinct ways can you climb to the top?

Example
Given an example n=3 , 1+1+1=2+1=1+2=3

return 3
题解

题目问的是到达顶端的方法数,我们采用序列类问题的通用分析方法,可以得到如下四要素:

State: f[i] 爬到第i级的方法数
Function: f[i]=f[i-1]+f[i-2]
Initialization: f[0]=1,f[1]=1
Answer: f[n]

\
一种vector初始化方式:
vector

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值