动态规划——递推求解 错邮件

动态规划

这是算法用途最广变化最多的算法之一
其实所有的动态规划,都可以由递归改写。
想要学好动态规划,就一定要对递归有深刻理解
递归与动态规划专题
递推呢就是最简单的动态规划,通过已经得到的值求解出下一个需要求解的值
当然也可以写成递归的形式如下一篇文章
兔子和奶牛

递推求解

一些简单的问题可以直接通过递推公式的方法求解
如斐波那契数列(这个大家就太熟悉了不写了)

错邮件

小明给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);
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值