• 不容易系列之(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
               一开始我按高中数学的思维,每个方格可能有几种情况,相乘,这个题目不是要求相邻及首尾元素不能相同吗,用总共可能的情况减去首尾相同的情况不就行了吗。但是,这样太麻烦了,我没做出来,给你5个方格这样还行,如果给你几十个方格,自己算够算一阵了,这时你想要计算机帮忙,但是,你要找出规律啊,再让计算机帮你求解。
              思维要转变,高中做的题范围往往都很小,现在要靠计算机帮助,就需要告诉它怎么做。
        思路:在n-1个方格后面放一个格构成n个方格。这时我们可以考虑固定第n-1个格,第n-1个格有两种情况,与第一个格相同色,或不同色。
    相同色时:第n个格有两种情况,所以总情况为2*f[n-2];
    不同色时:第n个格只有一种情况,所以还是原来的情况,即f[n-1];
    综上: f[n]=f[n-1]+2*f[n-2];//这就是告诉计算机的规律
       AC Code
     1 #include<iostream>
     2 #include<iomanip>
     3 //#include<bits/stdc++.h>
     4 #include<cstdio>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<algorithm>
     8 #include<sstream>
     9 #define PI  3.14159265358979
    10 #define LL long long
    11 #define  eps   0.00000001
    12 using namespace std;
    13 LL f[100];
    14 LL solve(LL x)
    15 {
    16     if(f[x]) return f[x];
    17     for(int i=4;i<=x;++i)
    18     {
    19         f[i]=f[i-1]+2*f[i-2];
    20     }
    21     return f[x];
    22 }
    23 int main()
    24 {
    25       LL T;f[1]=3,f[2]=6,f[3]=6;
    26       while(cin>>T)
    27       {
    28           if(T==1) cout<<3<<endl;
    29           else if(T==2) cout<<6<<endl;
    30           else if(T==3) cout<<6<<endl;
    31           else  cout<<solve(T)<<endl;
    32       }
    33 }
    View Code
     
  • 相关阅读:
    机器学习知识体系
    重新指派usb转串口模块在linux系统中的设备调用名称
    ROS 进阶学习笔记(13)
    121. 买卖股票的最佳时机
    SpringBoot | 集成Java Mail
    SpringBoot | 遇坑总结 | JPA
    测试 | 单元测试工具 | JUnit | 参数化
    测试 | 单元测试工具 | JUnit
    JSP | 基础 | 连接数据库
    Mysql | 总结 | 常用的查询语句(单表查询)
  • 原文地址:https://www.cnblogs.com/Auroras/p/10805873.html
Copyright © 2020-2023  润新知