2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色,
请你用 红、绿、蓝 三种颜色为每个单元格涂色。所有单元格都需要被涂色,
涂色方案需要满足:不存在相邻两个单元格颜色相同的情况。
返回网格涂色的方法数。因为答案可能非常大。
返回 对 109 + 7 取余 的结果。
1 <= n <= 1000。
1 <= m <= 5。

答案2023-02-11:

递归。

代码用rust编写。代码如下:

use std::iter::repeat;
fn main() {let ans3 = color_the_grid(4, 3);println!("ans3 = {}", ans3);
}static MOD: i32 = 1000000007;fn color_the_grid(m: i32, n: i32) -> i32 {let status = 1 << (m << 1);let mut dp: Vec<Vec<Vec<i32>>> = repeat(repeat(repeat(-1).take(status as usize).collect()).take(m as usize).collect(),).take(n as usize).collect();return process(0, 0, 0, n, m, &mut dp);
}fn process(i: i32, j: i32, s: i32, n: i32, m: i32, dp: &mut Vec<Vec<Vec<i32>>>) -> i32 {if i == n {return 1;}if j == m {return process(i + 1, 0, s, n, m, dp);}if dp[i as usize][j as usize][s as usize] != -1 {return dp[i as usize][j as usize][s as usize];}let up = (s >> (j * 2)) & 3;let left = if j == 0 { 0 } else { (s >> ((j - 1) << 1)) & 3 };let mut ans = 0;if up != 1 && left != 1 {ans += process(i, j + 1, (s ^ (up << (j * 2))) | (1 << (j * 2)), n, m, dp);ans %= MOD;}if up != 2 && left != 2 {ans += process(i, j + 1, (s ^ (up << (j << 1))) | (2 << (j << 1)), n, m, dp);ans %= MOD;}if up != 3 && left != 3 {ans += process(i, j + 1, (s ^ (up << (j << 1))) | (3 << (j << 1)), n, m, dp);ans %= MOD;}dp[i as usize][j as usize][s as usize] = ans;return ans;
}

2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红、绿、蓝 三种颜色为每个单元格涂色。所有单元格都需要被涂色, 涂色方案需要满足:相关推荐

  1. ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调

    ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调 目录 输出结果 实现代码 输出结果 实现代码 #!/usr/bin/python # co ...

  2. 点击div使div的颜色在红禄蓝三种颜色之间顺序切换

    前言 一.效果图 二.代码 1.html html中写一个div即可. 2.js代码 <script type="text/javascript">var _div=d ...

  3. 灰、黄、蓝三种颜色的收集装置模型练习及实现思路

    下图模型中,灰.黄.蓝三种颜色的收集装置各1个.灰.黄.蓝三种颜色的方形环各3个.方形环随机摆放在收集装置上.要求将方形环进行移动,通过最少次移动,使方形环颜色与收集装置颜色一致.每次可移动一个方形环 ...

  4. 【C语言基础练习】有红、绿、蓝三种颜色的球各3个。现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配。

    有红.绿.蓝三种颜色的球各3个.现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配. 1 #include<stdio.h>2 int main()3 {4 ...

  5. php解决红白黑三种球,2020版iPhone SE或周五推出 有红白黑三种颜色

    新款入门级iPhone机型的营销名称为2020 iPhone SE,苹果可能最快周五开始接受新款iPhone的订单. 腾讯科技讯 据外媒报道,苹果传言已久的新款入门级iPhone机型的新信息,包括营销 ...

  6. 有红白黑三种颜色的球用循环php,北师大版小学数学四年级上册综合复习题

    第五单元:除法 知识要点:①除数是两位数的除法:②路程.时间.速度之间的关系(路程=速度×时间,速度=路程÷时间,时间=路程÷速度):③商不变规律(被除数和除数同时扩大或缩小相同的倍数,商不变):④中 ...

  7. 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...

    满意答案 yivdi2o28 2014.05.15 采纳率:46%    等级:11 已帮助:4795人 #include<reg52.h> #define uint unsigned i ...

  8. 图像的直方图计算及绘制(红绿蓝三通道直方图)

    代码 #include <iostream> #include <opencv2/opencv.hpp> #include <vector>using namesp ...

  9. 红绿蓝三色阈值,比赛

    thresholds = [(0, 100, 7, 127, -128, 127), # generic_red_thresholds(0, 100, -128, -28, -128, 127), # ...

最新文章

  1. matplotlib绘制三维轨迹图
  2. 微信小程序WebSocket实现聊天对话功能完整源码
  3. easyui-datagrid行数据field原样输出html标签
  4. python导入excel数据-Python数据处理之导入导出excel数据
  5. 拦截导弹(最长递增子序列)
  6. boost.asio系列——io_service
  7. metinfo mysql 数据表_《MetInfo网站管理系统》常见问题整理
  8. 如何看CentOS系统是32位还是64位的?
  9. Shell脚本编程之(五)条件判断式
  10. Wireshake抓包数据怎么看(一)
  11. Windows下命令(bat可用)
  12. Varnish的基本应用详解
  13. 机器学习--逐步回归算法,线性回归的特征选择算法
  14. 16qam matlab 误码率,16QAM理论误码率与实际误码率MATLAB仿真程序
  15. Java post请求工具类
  16. oracle文本类型字段,Oracle字符的5种类型的介绍
  17. 终于在linux上用wine装上qq了
  18. vue3 去除百度地图右上角地图类型展示
  19. 从10个经典工业设计案例,来看什么是工业设计
  20. 计算机专业相关知识零碎记录

热门文章

  1. 微软模拟飞行10教程
  2. 在Hexo博客上添加可爱的Live 2D模型
  3. mysql怎么增加内存_如何加mysql5.5运行内存
  4. 【LeetCode-中等】55. 跳跃游戏(详解)
  5. hutool工具类生成二维码案例
  6. 任务描述本关任务:利用所学知识,按要求自行绘制一个 K 线图。
  7. matlab计算系统过渡过程时间,MATLAB在水电站水力过渡过程计算仿真中的应用
  8. 2021年最新WHQL认证申请流程
  9. (翻译)用户难以阅读全大写文本的原因
  10. 译(二十六)-Python怎么去除末尾的换行符?