动态规划
这是算法用途最广变化最多的算法之一
其实所有的动态规划,都可以由递归改写。
想要学好动态规划,就一定要对递归有深刻理解
递归与动态规划专题
递推呢就是最简单的动态规划,通过已经得到的值求解出下一个需要求解的值
当然也可以写成递归的形式如下一篇文章
兔子和奶牛
递推求解
一些简单的问题可以直接通过递推公式的方法求解
如斐波那契数列(这个大家就太熟悉了不写了)
错邮件
小明给n个朋友发邮件,结果每个人收到的都是不属于自己的那封,请问有多少种可能性
样例输入1:
2
样例输出1:
1
样例输入2:
3
样例输出2:
2
这个题在九度叫不容易系列之一,牛客也有,叫错邮件,题目我就精炼成这样一句话。
一看是排列组合,我们可以用递推公式的方法求解
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int arr[]={0,0,1};
if (n==0) {
System.out.println(arr[0]);
}else if (n==1){
System.out.println(arr[1]);
}else if (n==2){
System.out.println(arr[2]);
}else {
for (int i = 3; i <= n; i++) {
int t=2*(arr[2]+arr[1]);
arr[0]=arr[1];
arr[1]=arr[2];
arr[2]=t;
if (i==n) {
System.out.println(t);
}
}
}
}
}