标签:难题 颜色 影响 代码 print 两种 return rpg 大数
LELE的RPG难题
析:
假设有N个方格时的涂法是F[N]种。当前边n-1个方格成立时,再加第n种颜色无影响,此时有F[N-1]种涂法,当n-1个方格违法时,即有两个相邻的格子颜色相同,则有n-2个颜色合法,即F[N-2],第N种颜色有两种,此时2*F[N-1];继续分析n-3,发现要么是与前边情况重复,要么不存在这种情况。综上,F[N]=F[N-1]+2*F[N-2]。
代码:
#include <stdio.h>
#include <stdlib.h>
int main() //大数运算的套路。
{
int way[51][50]={0};
int n,i,j;
way[0][1]=3;
way[1][1]=3;
way[2][1]=6;
way[3][1]=6;
for(i=4;i<51;i++){
for(j=1;j<50;j++){
way[i][j]+=way[i-1][j]+2*way[i-2][j];
way[i][j+1]+=way[i][j]/10000;
way[i][j]%=10000;
}
}
while(scanf("%d",&n)!=EOF){
j=49;
while(!way[n][j--]);
printf("%d",way[n][j+1]);
for(;j>0;j--){
printf("%04d",way[n][j]);
}
printf("\n");
}
return 0;
}
标签:难题 颜色 影响 代码 print 两种 return rpg 大数
原文地址:http://www.cnblogs.com/clljs/p/7464892.html