J涂色问题

图中如果n-1的颜色和第一个的颜色不同,那么最后一个格子有1种涂色的方法   也就是  a(n-1)  

       如果n-1的颜色和第一个的颜色相同,那么最后一个格子有2种涂色的方法   也就是 2*a(n-2) 

 

通过树形图可以看出,对于本题,要分不同的情况讨论n=1,n=2,(n=3,n>=4)。

n=1时

三种填涂方法

n=2时

左面三种,右边有对应的两种填涂方法,一共6种填涂方法

n=3时

有6种填涂方法

n>=4时

An=2*An-2+An-1

 

 

要注意a[n]的数据类型,不然会爆。


#include<stdio.h>
long  long int a[60];

int main()
{
    int N;
    a[1]=3;
    a[2]=a[3]=6;
    for(int i=4;i<55;++i)
    {
        a[i]=2*a[i-2]+a[i-1];
    }
    while(~scanf("%d",&N))
    {
      if(N==1) printf("3\n");
      else if(N==2) printf("6\n");
      else if(N>=3)
      {
          printf("%lld\n",a[N]);
      }
    }
    return 0;
}

 

那么如果说颜色不是三个

m表示色的种数,an是方案数

an=(m-2)*a(n-1)+(m-1)*a(n-2)

相关文章:

  • 2021-07-17
  • 2022-12-23
  • 2022-02-18
  • 2022-12-23
  • 2022-03-08
  • 2021-06-20
  • 2021-11-26
猜你喜欢
  • 2021-11-21
  • 2022-12-23
  • 2021-10-10
  • 2021-08-05
  • 2022-12-23
  • 2021-09-12
  • 2022-01-06
相关资源
相似解决方案