你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。

给你网格图的行数 n 。

请你返回给 grid 涂色的方案数。由于答案可能会非常大,请你返回答案对 10^9 + 7 取余的结果。

示例 1:

输入:n = 1
输出:12
解释:总共有 12 种可行的方法:

示例 2:

输入:n = 2
输出:54
示例 3:

输入:n = 3
输出:246
示例 4:

输入:n = 7
输出:106494
示例 5:

输入:n = 5000
输出:30228214

提示:

n == grid.length
grid[i].length == 3
1 <= n <= 5000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-ways-to-paint-n-3-grid
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:
动态规划
每次对应上一行的所有三个数字排列有n中排列。
思路:确定某一层的所有排列数。每一层的总排列数由上层的排列所决定,上层排列分类不同,对应上层每种的排列得到的新排列数不同。
分为三类ABA类,ABC类,CBA类。其中,ABC类与CBA类互补。
ABA-> 3ABA + 2(ABC+CBA)---共两个
ABC+CBA-> 2ABA + 2(ABC+CBA)

设该层的ABA类个数为g[i],ABC+CBA类个数为h[i],则本层所有的排列数f[i]=g[i]+h[i]。
g[i+1]=3*g[i]+2*h[i]
h[i+1]=2*g[i]+2*h[i]
=>
f[i+1]= g[i+1]+h[i+1] = 5*g[i]+4*h[i] = 4*f[i]+g[i]

class Solution {
public:
long long g[5005];
long long f[5005];
int mod = int(pow(10,9))+7;
int numOfWays(int n) {
g[1] = 6;
f[1] = 12;
for(int i=2; i<=n; i++){
g[i] = ((f[i-1]*2)%mod + g[i-1])%mod;
f[i] = ((4*f[i-1])%mod + g[i-1])%mod;
} return f[n];
}
};

leetcode1141 N*3矩阵。阿里笔试no.1的更多相关文章

  1. 阿里笔试js题

    有一个数组,其中保存的都是小写英文字符串,现在要把它按照除了第一个字母外的字符的字典顺序(字典顺序就是按首字母从a-z顺序排列,如果首字母相同则按第二个字母……)排序,请编写代码: 例:[" ...

  2. [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列

    http://blog.csdn.net/jiaowopan/article/details/12009079 C/C++(Linux平台) 注意编译连接时需要链接pthread库,即g++ XX.c ...

  3. 大厂面试过程复盘(微信/阿里/头条均拿offer,附答案篇)

    背景 本人前端,3年经验,由于个人的原因,决定跳槽,于是大概3月开始找工作,总历时大概2个月,面试了微信/阿里/头条,三家都拿到了offer,来分享一下面经. 问题比较多,而且很多面试题都是跟个人项目 ...

  4. 面阿里P7,竟问这么简单的题目?

    关于作者:程序猿石头(ID: tangleithu),来自十八县贫困农村(查看我的逆袭之路),BAT某厂P7,是前大疆(无人机)技术主管,曾经也在创业公司待过,有着丰富的经验. 本文首发于微信公众号, ...

  5. 求职(2015南京站获得百度、美的集团、趋势科技、华为offer)

    版权所有所有:没有马缰绳chhuach(CSDN博客源).转载请注明出处. 禁止www.haogongju.net转载. 特此声明 一.开篇: 9月底,找工作接近尾声,笔者主要经历了2015年南京站百 ...

  6. 求职之路(拿到百度、美团、趋势科技、华为offer)

    求职之路(拿到百度.美团.趋势科技.华为offer) 版权所有:无缰之马chhuach(CSDN和博客源),转载请注明出处.CSDN地址http://blog.csdn.net/chhuach2005 ...

  7. 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)

    前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...

  8. 破坏之王——ddos攻击与防范 读书笔记

    好久没写博客了,最近把绿盟的<破坏之王——ddos攻击与防范>又翻了一下,整理了关于DDOS分类和原理的xmind图~~ 百度云盘:http://pan.baidu.com/s/1i3ms ...

  9. 计算机行业工作者-->面试的总结博文(【*持续补充】)

    1.博文题目:找实习/工作经验心得分享-偏IT技术向 http://blog.csdn.net/koudaidai/article/details/8063288 2.博文题目:百度,阿里 笔试面试 ...

随机推荐

  1. C++ primer plus读书笔记——第11章 使用类

    第11章 使用类 1. 运算符重载是一种形式的C++多态. 2. 不要返回指向局部变量或临时对象的引用.函数执行完毕后,局部变量和临时对象将消失,引用将指向不存在的数据. 3. 运算符重载的格式如下: ...

  2. [刷题] 435 Non-overlapping Intervals

    要求 贪心算法与动态规划的关系 给定一组区间,最少删除多少个区间,可以让这些区间之间互相不重叠 给定区间的起始点永远小于终止点 示例 [[1,2],[2,3],[3,4],[1,3]], 返回1 [[ ...

  3. Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.

    1.按照提示 systemctl status ssh.service 查看报错原因 sshd -t 2.结果 /etc/ssh/sshd_config line 34: missing argume ...

  4. (KVM连载) 8.2.3 KVM CPU性能测试方法

    (KVM连载) 8.2.3 KVM CPU性能测试方法 01/08/2013MASTER  2 COMMENTS 8.2.3 性能测试方法 本节的CPU性能测试选取了SPEC CPU2006.内核编译 ...

  5. 强哥jQuery学习笔记

    js对象: 1.js内置对象 2.js元素对象 3.jquery对象 js特效: 1.js元素对象 2.jQuery对象 jQuery学习: 1.核心函数 2.选择器 3.筛选 4.文档处理 5.属性 ...

  6. Scala 关键字

    Java关键字 Java 一共有 50 个关键字(keywords),其中有 2 个是保留字,目前还不曾用到:goto 和 const.true.false 和 null 看起来很像关键字,但实际上只 ...

  7. GCC编译 C与C++ C89与C99

    1) 最初的 ANSI C 标准 (X3.159-1989) 在 1989 年被批准,并于 1990 年发布.稍后这个标准被接受为 ISO 标准 (ISO/IEC 9899:1990) .虽然 ISO ...

  8. Java注解类型(@Annotation)

    简述 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1.通过代理对象调 ...

  9. 大作!webpack详细配置

    webpack学习之旅 好好学习 天天向上!遇到bug,不要慌! 文章目录 webpack学习之旅 大一统的模块化规范--ES6模块化 1.node.js中通过babel体验ES6模块化 2.ES6模 ...

  10. MongoDB(7)- 文档插入操作

    插入方法 db.collection.insertOne() 插入单条文档到集合中 db.collection.insertMany() 插入多条文档到集合中 db.collection.insert ...