码迷,mamicode.com
首页 > 其他好文 > 详细

hd acm2045

时间:2017-09-01 21:29:43      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:难题   颜色   影响   代码   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;
}

hd acm2045

标签:难题   颜色   影响   代码   print   两种   return   rpg   大数   

原文地址:http://www.cnblogs.com/clljs/p/7464892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!