///UVA580CriticalMass
#include<cstdio>
#include<cstring>
const int maxn = 30;
int f[maxn + 5], g[maxn + 5];
int main() {
f[0] = f[1] = f[2] = 0;
g[0] = 1 << 0; g[1] = 1 << 1; g[2] = 1 << 2;
for(int n = 3; n <= maxn; n++) {
f[n] = 1 << (n - 3);//当i等于1时
for(int i = 2; i <= n - 2; i++) f[n] += g[i - 2] * (1 << (n - i - 2));//累加当i不等于1时的所有情况
g[n] = (1 << n) - f[n];//计算g(n),即没有三个U放在一起的前n个盒子的方案
}
int n;
while(scanf("%d", &n) == 1 && n) printf("%d\n", f[n]);
return 0;
}
/*
4
5
0
*/
09-06
675
11-10
410
06-04
803
10-25
09-13
320
03-25
627
08-12
686
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交