uva11069
来源:互联网 发布:货到付款淘宝网商城 编辑:程序博客网 时间:2024/04/30 23:52
找一个1-n的子集,满足两个条件
(1)任何数不能相差1
(2)向其中插入不存在其中的1-n的数一定会存在一个数和其相差1.
用递归来统计。
f[i]表明选用了1-i个数中最后一个数。
那么f[i] = f[i - 3] + f[i - 2],因为选了i一定就要么选i - 2,要么选i - 3
最终答案是f[n] + f[n - 1]
AC代码:
#include <cstdio>#include <string.h>const int MAX_NUMBER = 100;long long value[MAX_NUMBER];int vis[MAX_NUMBER];void search(int cnt_number) { if (vis[cnt_number]) { return ; } vis[cnt_number] = 1; value[cnt_number] = 0; if (cnt_number > 2) { search(cnt_number - 2); value[cnt_number] += value[cnt_number - 2]; } if (cnt_number > 3) { search(cnt_number - 3); value[cnt_number] += value[cnt_number - 3]; }}int main() { memset(vis, 0, sizeof(vis)); value[1] = 1; vis[1] = 1; value[2] = 1; vis[2] = 1; int n; while (scanf("%d", &n) != EOF) { search(n); search(n - 1); long long ans = value[n] + value[n - 1]; printf("%lld\n", ans); } return 0;}
- uva11069
- UVA11069 - A Graph Problem(DP)
- 常用排序算法总结(一)----冒泡排序,归并排序
- PLMN介绍
- windows xp下安装UbuntuKylin双系统详细步骤
- JAVA eclipse(myeclipse)生成帮助文档(html或chm格式)
- 你想说什么就说吧
- uva11069
- Stanford Algorithms学习:Clustering
- Windows环境下Android NDK环境搭建
- java 泛型详解
- LoadRunner 自动登录163邮箱
- Access数据操作报错:操作必须使用一个可用的更新查询
- Loadrunner关联-手动关联
- 制作自己的Cydia发布源
- Flex 页面空白或Error 2032