算法之过河和贴瓷砖总结(dp)

这里就不描述题目了 直接贴个大佬讲dp的链接:http://cppblog.com/menjitianya/archive/2015/10/23/212084.html (这。我不太清楚这里是不是应该标注什么的?总之是转载的)

首先贴瓷砖的思路是:第i列的方案数等于最前面不能被影响到的列的方案数相加。重点是考虑第i列这一点,也是dp的思维,我遇到的题目是有1*2和2*2的瓷砖 只要将两种分开算最后加起来即可。

过河的话,如果自己想感觉真的是没有头绪。所以这里就贴一下那位大佬的思路吧:151942_1iez_3719898.png

最后是代码:

贴瓷砖:

import java.util.Scanner;

public class Main {
    
    public Main(){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for(int i=0;i<n;i++){
            int m = sc.nextInt();
            int[] f= new int[m+2];
            f[0]=f[1]=1;
            for(int j=2;j<=m;j++){
                f[j]=f[j-1]+f[j-2]+f[j-2];
            }
            System.out.println(f[m]);
        }
        
    }
    public static void main(String args[]){
        Main z = new Main();
    }
}

 

转载于:https://my.oschina.net/u/3719898/blog/1595155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值