首页 > 其他分享 >【计算思维作业】E.染色问题

【计算思维作业】E.染色问题

时间:2024-05-30 11:59:14浏览次数:21  
标签:思维 递归 格子 Color 染色 作业 相同 int 取色

题目

时间限制 1000 ms
内存限制 64 MB

题目描述

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法,要求对结果取模20141001。

输入数据

多组输入(<=100组数据,读入以EOF结尾)。 每组一行输入一个数字,n(2<=n<=2014) 环形的长度。

输出数据

每组输出一行结果。

样例输入
3
样例输出
6

思路

定义递归函数:

Color(n):前1到n的格子的染色方案数。

Color(n)有两个条件:

(1)第n个格子不能与第n-1个格子颜色相同

(2)第n个格子不能与第1个格子相同。

递归公式:

由题目可以知道,第n个格子的取色是由第n-1个格子和第1个格子颜色异同情况决定的。

(1)若第n-1个格子和第1个格子相同:

        (i)则第n个格子有2个取法。

而此时第n-1个格子的取色情况已经与第1个格子相同,不独立了

        (ii)所以之前的方案数是真正自由取色的Color(n-2)。

相乘则总情况数是:2*Color(n-2)

(2)若第n-1个格子和第1个格子不同:

第n个格子只有一个取色。

情况数就是:Color(n-1)

综上:Color(n)=2*Color(n-2)+Color(n-1)

递归终点:

Color(3)=6,Color(2)=6

Q1:为什么以n==3作为递归终点呢。

因为对于3个格子,第一个格子有3个颜色的取法,第二个格子有2个取法

但对于第3个格子,它同时受到第一个格子和第二个格子的限制:

(1)第三个格子不能与第一个格子颜色相同,假设第一个格子是Red,那第三个格子只有Pink和Green可选。

(2)第三个格子也不能与上一个(即第二个格子)相同。而第二个格子也不能与前一个(即第一个格子)相同,所以第二个也只能是Pink和Green的其中之一。假设第二个格子是Pink,那第三个格子不能与一二相同,只能是Green。

对于n>3的情况,第n-1个格子和第1个格子的取色就不会像n==3一样相互牵制。

所以n==3是递归终点。Color(3)=3*2*1=6

Q2:为什么以n==2作为递归终点呢。

n==2也和n==3一样具有特殊性

第2个格子的前一个格子就是第1个格子,条件重叠了,只起到一个效果。

Color(2)=3*2=6

代码

#include<iostream>
#include<cmath>
using namespace std;
#define len 2020
long long int block[len]={0};
long long int color(int n){
    if(n==2||n==3) return 6;
    else if(block[n]==0) block[n]=(2*color(n-2)+color(n-1))%20141001;
    return block[n];
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        cout<<color(n)<<endl;
    }
    return 0;
}

标签:思维,递归,格子,Color,染色,作业,相同,int,取色
From: https://blog.csdn.net/2301_79620132/article/details/139318636

相关文章

  • 国家开放大学《现代教师学导论》形考任务和终考任务大作业参考答案
    答案:更多答案,请关注【电大搜题】微信公众号答案:更多答案,请关注【电大搜题】微信公众号答案:更多答案,请关注【电大搜题】微信公众号  现代教师的()是教师对学生进行思想品德、心理健康教育的基本能力,一般包括教育活动的组织与管理能力、思想品德教育能力和心理健康教育能力......
  • JAVA每日作业day5.29
    依旧是活力满满的一天奥老铁们。今天学习了数组,数组包括了以下方面:1.动态初始化:自己定义数组的长度,系统决定初始值。2.静态初始化:自己决定数组的初始值,系统决定长度。3.数组的的索引:索引从0开始并逐一增加(每次加1),我们要存储数组的数据时,要用索引来存储,话不多说上代码。......
  • 思维题选记
    洛谷P1146硬币翻转首先,有一个关于硬币翻转的性质,就是一个硬币只有翻转奇数次才能反面朝上,这是显然的。这启发我们构造一种能使每个硬币翻转奇数次的方案。同时,我们发现对完全相同的一组$n-1$个硬币执行两次及以上的操作是没有意义的,因为执行奇数次的话,就相当于$1$次。偶数......
  • 2024提升数字思维能力加快企业数字化转型(74页PPT)
    方案介绍:本报告的价值在于为企业提供了一套系统的提升数字思维能力、加快数字化转型的理论框架和实践指南。通过本报告的学习和应用,企业可以更加清晰地认识到数字化转型的重要性和紧迫性,明确自身在数字化转型中的优势和不足,并找到适合自己的转型路径和策略。同时,本报告也为企......
  • 软件工程作业6
    问题:如果你要开发一个中小学生学习数学的软件你应该找谁去做用户调研?开发一个针对中小学生的数学学习软件时,进行有效的用户调研至关重要,这能确保产品贴合目标用户的需求和学习习惯。以下是一些适合参与用户调研的对象:中小学生:直接用户群体,他们的反馈能直接反映产品的实用性......
  • 2024-05-23_结构体概念等作业
    1.如有以下代码:structstudent{intnum;charname[32];floatscore;}stu;则下面的叙述不正确的是:()A.struct是结构体类型的关键字B.structstudent是用户定义的结构体类型C.num,score都是结构体成员名D.stu是用户定义的结构体类型名解析:A:正确,在C......
  • 操作系统实验二 短作业优先进程调度算法
    实验二短作业优先进程调度算法实验内容编写程序,模拟实现短作业优先进程调度算法。从测试文件读入进程相关信息,然后给出不同进程调度算法下,进程的运行次序情况。测试数据文件格式:测试数据文件包括n行测试数据,分别描述n个进程的相关信息。每行测试数据包括四个字段,各个字......
  • XMind 2024 v24.04.10311特别版 – 一款风靡全球的思维导图软件
    软件介绍XMind2024中文破解版(XMind思维导图2024)是一款风靡全球的头脑风暴和思维导图软件,为激发灵感和创意而生.在国内使用广泛,拥有强大的功能,包括思维管理,商务演示,与办公软件协同工作等功能.XMind中文版采用全球先进的EclipseRCP软件架构,是集思维导图.头脑风暴,脑图......
  • 《拯救大学生课设不挂科第四期之蓝桥杯是什么?我是否要参加蓝桥杯?选择何种语言?如何科学
    背景:有些同学在大一或者大二可能会被老师建议参加蓝桥杯,本视频和文章主要是以一个过来人的身份来给与大家一些思路。比如蓝桥杯是什么?我是否要参加蓝桥杯?参加蓝桥杯该选择何种语言?如何科学备赛?等问题进行一个经验分享视频地址:【240526晚21点56分更新视频地址完毕】《拯救......
  • 立体几何 | 思维导图
    前言使用方法:如果想得到更好的显示效果,可以点击全屏按钮,已经实现电脑端、手机端的适配,效果很好;电视端没有实现适配,Ipad端的适配没有测试;思维导图全屏知识结构图......