地址:
题意:3*n的矩形用2*1的砖堆法。
mark:wa了,两次。。一次数组只开到30了,一次循环跳出条件写错了。。囧……递推就ok了。
我是画图一步一步推出来的。首先肯定是2个2个增加的。首先考虑不交叉的f(n) = 3*f(n-2),再考虑交叉的,会发现规律,2*(f(n-4)+f(n-6)+……)
ps:后来看大牛的代码,发现公式化简了可以降低复杂度,虽然这题n最大才30。f(n) = 4*f(n-2)-f(n-4)
代码:
#includeint main(){ int n,i,j,a[31] = { 1}; for(i = 1; i <= 30; i++) { if(i & 1) {a[i] = 0;continue;} a[i] = 3*a[i-2]; for(j = 0 ; j < i-3; j += 2) a[i] += 2*a[j]; } while(scanf("%d", &n), n >= 0) printf("%d\n", a[n]); return 0;}