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