• 2045不容易系列之(3)—— LELE的RPG难题


    Problem Description
    人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即”可乐”),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:

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

    以上就是著名的RPG难题.

    如果你是Cole,我想你一定会想尽办法帮助LELE解决这个问题的;如果不是,看在众多漂亮的痛不欲生的Cole女的面子上,你也不会袖手旁观吧?

    Input
    输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0

    Output
    对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。

    Sample Input
    1
    2

    Sample Output
    3
    6
    思路:这是我从西安区域赛回来第二次接触染色问题分析如下:n个方格可以由n-1个方格和n-2个方格填充得到。
    比如,在一涂好的n-1个格子里最后再插入一个格子,就得到了n个格子了。
    因为已经填好n-1的格子中,每两个格子的颜色都不相同。
    所以只能插入一种颜色。而n-1个格子一共有F[n-1]种填涂方法。所以从n-1格扩充到n格共有F(n-1)种方法。

    若前n-1不合法,而添加一个后变成合法,即前n-2个合法,而第n-1个与第1个相同。
    这时候有两种填法。
    所以
    a[n]=a[n-1]+2*a[n-2];
    a[1]=3; a[2]=6; a[3]=6

    a[n]=a[n-1]+2*a[n-2]; a[1]=3; a[2]=6; a[3]=6

    QQ截图20141102100322 QQ截图20141102100340

    #include<stdio.h>
    int main()
    {
        __int64 a[55]={0,3,6,6};
        int i;
        for(i=4;i<55;i++)
            a[i]=a[i-1]+a[i-2]*2;
        int n;
        while(scanf("%d",&n)==1)
        {
            printf("%I64d
    ",a[n]);
        }
        return 0;
    }
  • 相关阅读:
    兜底方案只能用来兜底,而不能完全依靠它---记一次数据库唯一索引DuplicateKeyException异常的优化
    不注重开发细节,活该你忙!
    二叉树存储
    并查集模板
    684. 冗余连接
    820. 单词的压缩编码
    1102. 得分最高的路径
    滑动窗口模板
    古道西风“瘦马”
    西江月·凉凉
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4236877.html
Copyright © 2020-2023  润新知