hdu2045 遞迴水題

XiaohuangTX發表於2024-05-11

這道題的解法就是站在塗色後的最後一塊,思考前一塊是怎麼塗色的就可以了,比如 如果最後一塊的前一塊是與第一塊顏色不同的情況,則最後一塊只有一種顏色可以塗,其方法的數目等於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();
    }
}

相關文章