前言:

这道题吧,没有思路的时候想法可以非常多样,但解法异常简单,老规矩不想看直接翻最后抄代码

上题目:

思路:

一)我看到这道题第一个思路是分类解决:

1.一种颜色,显然有3种可能

2.两种颜色,显然全部可以,是一个排列组合问题

3.到三种颜色就开始复杂了,是一个填色问题

到这边思维卡壳了,于是换一种想法:递推

二)每个球能取得颜色数和前面两个相关,所以我们需要考虑n-2 n-1 n 三个球

初始化数组

long long a[50];

为了阅读方便我们使用从1开始的下标开始初始化

a[1] = 3; //同上,路径长度为1,三种上色方法
a[2] = 9; //路径长度为2,有单色3种 + 双色6种(有顺序的A32);

考虑

1)n-2和 n-1颜色一样,此时 a[n-2] = a[n-1] ,第 n 个珠子有 3 * a[n-2]

2)n-2和 n-1颜色不同时不太好理解,我是画图看出来的,如下图,有点抽象,类似一个三叉树,自己画画图就能懂了

我这图以0为root节点

0
1 2 3
1 2 3 1 2 3 1 2 3
1 2 3 1 2 1 3 1 2 1 2 3 2 3 1 3 2 3 1 2 3

a[n]行包括a[n-1] 和 a[n-2] 颜色相同与不同的情况(比如图中第四行共有三组带123的组,这三组分别是从第三行第二行相同的元素衍生出来的(比如第四行的第一个123就是由第二行和第三行的1衍生出来的))

因此n-2和 n-1颜色不同时,第n个位置应该用总的减去上一种的再乘二,为 2 * [ a[n-1] - a[n-2] ]

3)因此第n个位置递推公式 a[n] = 3 * a[n-2] + 2 * [a[n-1] - a[n-2]] = 2 * a[n-2] + a[n-1]

由此分析完了,代码非常简单,放下面了,也无需注释:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>long long a[50];
int main()
{int n;while (scanf("%d",&n) != EOF){a[1] = 3;a[2] = 9;for (int i = 3; i <= n; i++)a[i] = 2 * a[i - 1] + a[i - 2];printf("%lld\n", a[n]);}
}

后记:

一开始只是找数字的规律写出来的,后面正经的去想为什么还是非常耗时的····太菜,还得练!

LevOJ P1685飞跃悬崖(着色问题)相关推荐

  1. P1685 飞跃悬崖

    题目描述 蝙蝠来到一处悬崖面前,悬崖中间飞着很多红,黄,蓝三种颜色的珠子,假设我们把悬崖看成一条长度为 n 的线段,线段上的每一单位长度空间都可能飞过红,黄,蓝三种珠子.如果在连续 3 段单位空间碰到 ...

  2. python中leap是什么意思_leap

    While other people were turning over the matter, he leapt in with his proposal. 当别人还在再三考虑这件事时,他迅速提出自 ...

  3. 一次次小进步,从毕业开始,你到现在飞跃了几次了,程序人生也不容易?

    01. 会写最简单的程序,能编译通过了,是一次飞跃. 02. 会写C/S程序了,能用那些常用的控件,对属性事件有了解了,会用了,是一次飞跃. 03. 会写B/S程序了,也是一次飞跃. 04. 你彻底理 ...

  4. asp.net2.0学习历程 菜鸟到中级程序员的飞跃【月儿原创】

    asp.net2.0学习历程 菜鸟到中级程序员的飞跃 --30本好书点评 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.5.1 ...

  5. 作业12图的着色问题

    问题图的m着色问题.给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个 顶点一种颜色.如果要求G的每条边的两个顶点着不同颜色.给出所有可能的着色方 案:如果不存在,则回答"NO&qu ...

  6. 自动驾驶有量子飞跃式改进,马斯克称年内实现L5级别自动驾驶?

    自动驾驶技术一直是全球各大汽车厂家研发的主要方向.虽然目前有不少汽车厂商都在开始标榜自家车型迈入L3级别自动驾驶了,但是消费者能够真正体验到的<车壹圈>认为还是仅仅处于L2+级别自动驾驶. ...

  7. 强化学习之gym初战实战案例:悬崖案例CliffWalking-v0。

    文章目录 强化学习简介 gym简介 CliffWalking-v0 强化学习简介 我们知道,强化学习广泛应用于玩一些较为简单的游戏,其思想就是:过一段时间(例如0.1秒)拍一张(游戏)图片,然后机器看 ...

  8. 认知AI的兴起:2025年AI将会发生质的飞跃

    来源: Gadi Singer 自 1956 年 AI 的概念首次被提出,至今已有 60 多年的发展史.如今,随着相关理论和技术的不断革新,AI 在数据.算力和算法 "三要素" 的 ...

  9. 王飞跃 | 面向未来的AI人才应该具备这3种思维

    来源:湛庐阅读 作者:王飞跃  苇草智酷学术委员.中科院自动化研究所复杂系统与智能科学重点实验室主任.中国科学院社会计算与平行系统研究中心主任 当今最好的人工智能程序到底有多智能?它们是如何工作的?能 ...

最新文章

  1. Indri和Terrier搜索引擎的使用
  2. IAR J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?
  3. 2.13 break和continue
  4. php正则表达式,数组,函数
  5. 01.elasticsearch-security_es鉴权机制
  6. CentOS 6.x 快速安装L2TP ***
  7. 用java单源最短路径问题_单源最短路径-贪心算法
  8. JAVA Timer 定时器
  9. html5游戏开发--动静结合(二)-用地图块拼成大地图 初探lufylegend
  10. python 的文件类操作
  11. DNN群宗旨--QQ群(DNN山海经):56782274
  12. 郭德纲家训--话糙理不糙
  13. 三人表决器实验报告总结_三人表决器实验报告..doc
  14. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
  15. python处理实验数据,Python在热敏电阻测量实验数据处理中的应用
  16. 【分享】神龙斗士123部下载链接,魔神英雄传辽宁艺术90年代配音版
  17. 根据一堆数字判定下一个数字_坐在一堆数字黄金
  18. Configure文件学习
  19. Unity--使用鼠标操纵摄像机,让其围绕屏幕中心旋转
  20. Python 使用 win32com 模块对 word 文件进行操作

热门文章

  1. 让人着迷的 STP生成树协议
  2. LeetCode - Trangle
  3. 电子厂计算机常用英语,电子厂常用英语
  4. vue项目执行命令npm run serve运行项目时 停在 98% after emitting CopyPlugin
  5. 关于微信开发的语音存储问题
  6. windows不是正版_你的电脑win10系统是正版吗?教你四步测试
  7. 伤害世界服务器连接失败_伤害世界服务器怎么架设_伤害世界服务器架设图文教程_玩游戏网...
  8. 硬盘存储结构及分区简介
  9. 十步会用IOCOMP–iplotx控件
  10. one 主格 复数 宾格_主格和宾格的区别