递归
斐波那契数列
longlong fib(int n)
{
if(n<3)
{
return 1;
}
else
{
return fib(n-1)+fib(n-2);
}
}
汉诺塔问题
void Move(int n, int A, int B, int C)
{
if(n==1)
{
cout<<"move 1 piece from"<<A<<"to"<<C<<endl;
}
else
{
Move(n-1,A,C,B);
Move(1,A,B,C);
Move(n-1,B,A,C);
}
}
动态规划建模
- (1)把什么东西分给谁,那么谁的总数就是 n
- (2)确定阶段变量 k : k = 1 , 2 , ⋅ ⋅ ⋅ , n k: k = 1, 2, ···, n k:k=1,2,⋅⋅⋅,n
- (3)确定状态变量 𝐬 𝐤 : 𝐬 𝐤 𝐬_𝐤: 𝐬_𝐤 sk:sk是分配给第 k k k个谁到第 n n n个谁的东西数
- (4)确定决策变量 𝐱 𝐤 : 𝐱 𝐤 𝐱_𝐤: 𝐱_𝐤 xk:xk是分配给第 k k k个谁的东西数
- (5)确定确定状态转移方程 𝐬 𝐤 + 𝟏 : 𝐬 𝐤 + 𝟏 = 𝐬 𝐤 − 𝐱 𝐤 𝐬_{𝐤+𝟏}: 𝐬_{𝐤+𝟏}= 𝐬_𝐤− 𝐱_𝐤 sk+1:sk+1=sk−xk
- (6)确定阶段指标函数 𝐏 𝐤 ( 𝐱 𝐤 ) : 𝐏_𝐤(𝐱_𝐤): Pk(xk): 第 k k k个谁分配 𝐱 𝐤 𝐱_𝐤 xk的东西时的收益
- (7)确定最优指标函数 𝐟 𝐤 ( 𝐬 𝐤 ) : 𝐟_𝐤(𝐬_𝐤): fk(sk):第 k k k个谁到第 n n n个谁分配 𝐬 𝐤 𝐬_𝐤 sk的东西时的最大收益
- (8)写出方程
医疗队分配问题
木棍切割问题
最长子序列问题