首页 > 代码库 > UVA580-Critical Mass
UVA580-Critical Mass
题目链接
题意:一个栈中只能放入U和L,问存在连续3个以上U(危险组合)的个数为几个
思路:用从的组合数-安全组合=危险组合。d[i]表示第i个位置以L结束的序列,所以就有d[i] = d[i - 1] + d[i - 2] + d[i - 3]。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; const int MAXN = 55; int dp[MAXN]; int n; void init(){ memset(dp, 0, sizeof(dp)); dp[1] = 2; dp[2] = 4; dp[3] = 7; for (int i = 4; i < MAXN; i++) dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]; } int main() { init(); while (scanf("%d", &n) && n) { int ans = pow(2, n); ans -= dp[n]; printf("%d\n", ans); } return 0; }
UVA580-Critical Mass
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。