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(); } }