zoukankan      html  css  js  c++  java
  • HDU 2045 不容易系列之(3)—— LELE的RPG难题

    解题报告:

    题目大意:给你一个n,表示有n个排成一条直线的方格,现在有红、粉、绿三种颜色,用着三种颜色将这个n个方格涂满,涂色的规则是相邻的两个方格的颜色不能相同,

    并且最后一格跟第一格的颜色不能相同,要求一共有多少涂色的方法。

    也是一道动态规划题,若现在要求有n个方格时有多少种涂色方法,可以把它化为两个子问题来 求解,第一,当第n-1个方格涂的颜色与第一格的颜色相同时,而第n-1格的颜色与第一格颜色相同的情况可以由n-2格的结果得到,因为当有n-2个方格的情况的时候,要求的就是最后一格不能与第一格的颜色相同,于是就可以看成是将n-2的情况直接在后面加上一种与第一格相同的颜色,就得到了当第n-1格的颜色与第一格的颜色相同的情况。而当第n-1格的颜色与第一格相同时,第n格的涂色方案就可以是两种了。接下来就考虑另一种子问题,即当第n-1格的颜色与第一格的颜色不同时,那么第n格的涂色方案很明显就只有一种了,于是将这两种子问题加起来就得到有n个方格时涂色方案的种数。

    View Code
     1 #include<stdio.h>
     2 __int64 DP[55],n;
     3 void dabiao() {
     4     DP[1]=3;
     5     DP[2]=DP[3]=6;
     6     for(int i=4;i<=51;++i)
     7     DP[i]=DP[i-1]+DP[i-2]*2;
     8 }
     9 int main() {
    10     dabiao();
    11     while(scanf("%I64d",&n)!=EOF)
    12     printf("%I64d\n",DP[n]);
    13     return 0;
    14 }
  • 相关阅读:
    IK分词器插件
    倒排索引
    logstash-安装、基本使用、入门
    Anaconda使用-详解
    java之反射
    Java中级路线jdbc第一天
    Java字符串及字符串的常用方法知识点总结
    Java基本类型的类包装知识点总结
    Java Class类知识点总结
    java异常类知识点总结
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3074462.html
Copyright © 2011-2022 走看看