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


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

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

    以上就是著名的RPG难题.

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

     
    Input
    输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。
     
    Output
    对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。
     
    Sample Input
    1 2
     
    Sample Output
    3 6
     
     
     
    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        int n, a;
        int i, t;
        __int64 f[1000], j;
        while( ~scanf( "%d", &a ))
        {
               f[1] = 3;
               f[2] = 6;
               f[3] = 6;
               if( a == 1)
                 printf( "3\n" );
               else if( a == 2)
                 printf( "6\n" );
               else if( a == 3)
                 printf( "6\n" );
               else
               {
                  for( i = 4; i <= a; i++ )
                    j=f[i] = f[i-1] + 2 * f[i-2];
                      printf( "%I64d\n", j );
                }
        }
        system( "pause" );
        return 0;
    }
     
     
     
    关于公式的递推:
    要求f(n)
    假设钱n-1个已经按要求排好了,再在后面加一个数
    他要不和第一个相等,还要不和第n-1个相等
    所以最后加的那个数只有一种情况
    所以=1*f[n-1] 
    然后
    假设钱n-2个数已经排好。第n-1个数是不符合的。
    也就是说,第一个数和第n-2个数不同,第一个数和第n-1个数相同。
    现在加一个数让整个数列符合要求
    加的最后那个数和第一个数不相等就行
    所以最后一个数可以有两种情况
    即2*f(n-2)
    f[n] = f[n-1] + 2 * f[n-2];

     
  • 相关阅读:
    疫情控制
    2020 CSP-J 多校赛 Day 2 T2 题解
    三校联考-水题狂欢信心赛
    QBXT 提高组储备营 2020.夏 游记
    【题解】(我出的题)XM捡面筋
    【题解】P4025 [PA2014]Bohater
    【题解】1644:【例 4】佳佳的 Fibonacci
    【题解】CF1165F2 Microtransactions (hard version)
    P2261 [CQOI2007]余数求和
    OVO——扶咕咕的20道CF
  • 原文地址:https://www.cnblogs.com/zsj576637357/p/2252053.html
Copyright © 2020-2023  润新知