擅长排列的小明 II

时间限制:1000 ms  |  内存限制:65535 KB

描述

小明十分聪明,而且十分擅长排列计算。

有一天小明心血来潮想考考你,他给了你一个正整数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相关推荐

  1. 动态规划(6)——NYOJ469擅长排列的小明II*

    擅长排列的小明 II 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1.第一个数必须是1 2. ...

  2. NYOJ 擅长排列的小明 酒馆浪人的博客

    这道题依旧是全排列只不过根D的小L略有不同 擅长排列的小明 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5 ...

  3. 擅长排列的小明 II

    描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1.第一个数必须是1 2.相邻两个数之差不大于2 ...

  4. NYOJ 469 擅长排列的小明 II (dp问题)

    地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=469 思路:动态规划dp 题目分析: 由于第一个只能是1,则第二个数只能是2,3 当第二个数是 ...

  5. nyoj-469--擅长排列的小明 II

    擅长排列的小明 II 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2, ...

  6. nyoj 19 擅长排列的小明(深搜,next_permutation)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难 ...

  7. NYOJ 19 擅长排列的小明

    擅长排列的小明 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你 ...

  8. 擅长排列的小明(nyoj19)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难 ...

  9. nyist oj 19 擅长排列的小明(dfs搜索+STL)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ...

最新文章

  1. C中堆管理—浅谈malloc,free,calloc,realloc函数之间的区别
  2. Redmine使用指南
  3. 现在的路由器是第几代了?每一代的特点是?
  4. 关于若干数据库数据插入性能的对比
  5. Python装饰器、生成器、内置函数、Json-Day05
  6. Django 3.2.5博客开发教程:使用富文本编辑器添加数据
  7. 请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程
  8. 知名Node.js组件存在代码注入漏洞
  9. 开发辅助 | 阿里图标库iconfont入门使用
  10. 共建智慧云基石,阿里云携手英特尔走向数智未来
  11. 【LaTeX笔记1】最全命令+符号
  12. 制定自动化测试实施计划
  13. python中pandas什么意思_python pandas 基础理解
  14. 京东供应链溯源防伪平台
  15. 安全扫描工具-appscan
  16. python代码混淆工具,Python版代码混淆工具
  17. 2.跳跃游戏(c++)
  18. 《信息化项目文档模板十三——研发项目申报书 》
  19. python编程猜拳游戏_python写猜拳小游戏
  20. mysql主备的工作原理是_mysql主从备份及原理分析

热门文章

  1. leetcode - 104. 二叉树的最大深度
  2. 无人驾驶三 卡尔曼滤波及无迹卡尔曼滤波的几何意义
  3. Ubuntu16.04下制作deb包的方法详解
  4. 打造超炫的专属Eclipse
  5. VC RichEdit插入表格(RTF形式)
  6. 天池-新闻推荐-多路召回
  7. kd树介绍(KNN算法引出)
  8. Servlet验证码功能
  9. 蔡高厅老师 - 高等数学-阅读笔记 - 01 - 前言、函数【视频第01、02、03、】
  10. loss 加权_【转载】keras 自定义 loss损失函数, sample在loss上的加权 和 metric