zoukankan      html  css  js  c++  java
  • RPG

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

    解题思路:递推f(1)=3,f(2)=6,f(3)=6,如果有n个方格,当对第n个方格填色时,有两种情况:

         第一种   :应该已经对前面n-1个方格填好了色,有f(n-1)种情况,此时第n-1个跟第一个颜色一定不一样,所以第n个只有一种选择。
         第二种    :对前面n-2个方格填好色,有f(n-2)种情况,第n-1个空格颜色跟第一个颜色一样(否则就成了上面那种情况了),只有一种可能,最后第n个方格可以填两种颜色(因为n-1和1是第同种颜色),所以是 2*f(n-2);

                       可以推出f(n)=f(n-1)+2(n-2),n>=4;

    #include<stdio.h>
    
    int main()
    {
    	int n,i;
    	long long a[101] = {0,3,6,6};
    	while(~scanf("%d",&n)){
    		for(i = 4; i<=n; i++){
    			a[i] = a[i-1]+a[i-2]*2;
    		}
    		printf("%lld
    ",a[n]);
    	}
    	return 0;
    }
    

      欢迎批评指正。

  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/clb123/p/10109655.html
Copyright © 2011-2022 走看看