HDOJ2045(组合数学)

来源:互联网 发布:vb中left函数 编辑:程序博客网 时间:2024/05/15 10:10

典型的环形染色问题

当染第n个的时候,如果第一个和第n-1个是颜色不同的,那么问题前面的n-1个即是规模为n-1的子问题,而第n个只有一种颜色可选(3-2)

当第1个和第n-1个相同颜色的时候,第n个有2种颜色可以选,而因为第n-2个,颜色与第1个不同,所以转化成规模为n-2的子问题

所以,可以推倒出:

f(n)=f(n-1)+2*f(n-2);

/*HDOJ2045作者:陈佳润2013-04-08*/#include <stdio.h>int i,n;__int64 s[60];void num(){s[0]=3,s[1]=3,s[2]=6,s[3]=6;for(i=4;i<=50;i++){s[i]=2*s[i-2]+s[i-1];printf("%I64d\n",s[i]);}}int main(){num();while(~scanf("%d",&n)) {printf("%I64d\n",s[n]);}return 0;}


原创粉丝点击