hdu2045 递归水题

这道题的解法就是站在涂色后的最后一块,思考前一块是怎么涂色的就可以了,比如 如果最后一块的前一块是与第一块颜色不同的情况,则最后一块只有一种颜色可以涂,其方法的数目等于f(n-1),而当最后一块前面一块的颜色与第一块相同时,则倒数第三块一定与第一块的颜色不同,则涂到倒数第三块有f(n-2)方法,到倒数第二块有f(n-2)*1种方法,最后一块则有 f(n-2)*2种方法,由此可以的出递推的关系式
f(n)=f(n-1)+2 * f(n-2);
题目中给出的范围不大,可以先采取打表的方法给出所有的结果,再输出即可。

原文链接:https://blog.csdn.net/qq_45651829/article/details/103063836

import java.util.Scanner;

public class hdu2045 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        long[] aa = new long[51];
        aa[1] = 3;
        aa[2] = 6;
        aa[3] = 6;
        for (int i = 4; i < aa.length; i++) {
            aa[i] = aa[i-1] + aa[i-2]*2;            
        }
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int x = sc.nextInt();
            System.out.println(aa[x]);
        }
        sc.close();
    }
}

 

posted @ 2024-05-11 22:41  XiaohuangTX  阅读(2)  评论(0编辑  收藏  举报