NYOJ 擅长排列的小明 II---Problem B
擅长排列的小明 II
- 描述
-
小明十分聪明,而且十分擅长排列计算。
有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列:
1、第一个数必须是1
2、相邻两个数之差不大于2
你的任务是给出排列的种数。
- 输入
- 多组数据。每组数据中输入一个正整数n(n<=55).
- 输出
- 输出种数。
- 样例输入
-
4
- 样例输出
-
4
- 来源
- Ural
- 上传者
- 李文鑫
-
这个题当时没做出来,就差一点额,今天就在DFS中加1,就过了!!
我的代码:
View Code我的做法是:就是一步一步的往下推的,可惜的是当时少推了一种情况;首先是1是必须是第一个的,是1的时候我就想着用f[1]表示;从第二个数开始,是2或3;当是2的时候,就用f[2]表示;当时3的时候,我发现如果n>4的话,第二个数为3那么第三四都固定了即必须是1324,因为只有这样才符合题意,这时我就理解为这不等于直接到4了?那我就有f[4]表示;又经过很多的推导我发现都是这个规律,所以当时就推出f[i]=f[i+1]+f[i+3];我这里的f[i]表示到第i个数的时候的所包含的各种情况!可惜我少想了一种情况,即1、3、5、7……2n+1、2n……6、4、2这种情况!即f[i]=f[i+1]+f[i+3]+1;如代码中的tmp[i]=DFS(i+1)+DFS(i+3)+1;
出题人的代码:
View Code#include <stdio.h> int main(){int i,f[60]; f[1]=f[2]=1; f[3]=2;for(i=4;i<56;i++) f[i]=f[i-1]+f[i-3]+1;while(scanf("%d",&n)!=EOF) printf("%d\n",f[n]); return 0;}
额,看着都是这么的牛B哈!代码简单,意义不简单啊!
f[i]=f[i-1]+f[i-3]+1;显然这个公式看着跟我推的有些相似,但却又很不同,意义很不同;它的解析是:f[i]表示有i个依次排列的数、第一个数固定、所有符合条件的排列种数。例:f[5]=f[4]+f[2]+1; 1 2 3 4 5 第一个数为1,第二个数为2时、f[4]表示:2-5共四个数、2固定的所有排列种数!第二个数为3时、f[2]时表示:(1 3 2 4固定)4-5共两个数、4固定的所用排列种数!1表示:1 3 5 4 2 即上面所说的那种情况!
还有傻傻做的方法,就不贴代码了。她是自己推出来的公式,反正与上边有很大的差异、、话说人家推导了9页才发现的规律!啊,很BT啊,哈哈!
转载于:https://www.cnblogs.com/fornever/archive/2012/03/19/2405900.html
NYOJ 擅长排列的小明 II---Problem B相关推荐
- 动态规划(6)——NYOJ469擅长排列的小明II*
擅长排列的小明 II 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1.第一个数必须是1 2. ...
- NYOJ 擅长排列的小明 酒馆浪人的博客
这道题依旧是全排列只不过根D的小L略有不同 擅长排列的小明 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5 ...
- 擅长排列的小明 II
描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1.第一个数必须是1 2.相邻两个数之差不大于2 ...
- NYOJ 469 擅长排列的小明 II (dp问题)
地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=469 思路:动态规划dp 题目分析: 由于第一个只能是1,则第二个数只能是2,3 当第二个数是 ...
- nyoj-469--擅长排列的小明 II
擅长排列的小明 II 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2, ...
- nyoj 19 擅长排列的小明(深搜,next_permutation)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难 ...
- NYOJ 19 擅长排列的小明
擅长排列的小明 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你 ...
- 擅长排列的小明(nyoj19)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难 ...
- nyist oj 19 擅长排列的小明(dfs搜索+STL)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ...
最新文章
- C中堆管理—浅谈malloc,free,calloc,realloc函数之间的区别
- Redmine使用指南
- 现在的路由器是第几代了?每一代的特点是?
- 关于若干数据库数据插入性能的对比
- Python装饰器、生成器、内置函数、Json-Day05
- Django 3.2.5博客开发教程:使用富文本编辑器添加数据
- 请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程
- 知名Node.js组件存在代码注入漏洞
- 开发辅助 | 阿里图标库iconfont入门使用
- 共建智慧云基石,阿里云携手英特尔走向数智未来
- 【LaTeX笔记1】最全命令+符号
- 制定自动化测试实施计划
- python中pandas什么意思_python pandas 基础理解
- 京东供应链溯源防伪平台
- 安全扫描工具-appscan
- python代码混淆工具,Python版代码混淆工具
- 2.跳跃游戏(c++)
- 《信息化项目文档模板十三——研发项目申报书 》
- python编程猜拳游戏_python写猜拳小游戏
- mysql主备的工作原理是_mysql主从备份及原理分析