zoukankan      html  css  js  c++  java
  • poj 2506 Tiling (递推)

    http://poj.org/problem?id=2506
    
    #include<stdio.h>
    #include<string.h>
    int a[260],b[260];
    char str[260][260];
    void add()
    {
        int i,j,k;
        str[0][0]='1';//不要忘了0,我就贡献了一次wa
        str[0][1]='\0';
        str[1][0]='1';
        str[1][1]='\0';
        str[2][0]='3';
        str[2][1]='\0';
        for(i=3;i<=260;i++)
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            int len1=strlen(str[i-2]);
            for(k=len1-1,j=0;k>=0;k--,j++)
            {
                a[j]=str[i-2][k]-'0';
            }
    
    
            for(j=0;j<len1;j++)
            {
                a[j]=a[j]*2;
    
            }
            for(j=0;j<len1;j++)
            {
                 a[j+1]+=a[j]/10;
                a[j]=a[j]%10;
            }
    
            int len2=strlen(str[i-1]);
            for(k=len2-1,j=0;k>=0;k--,j++)
            {
                b[j]=str[i-1][k]-'0';
            }
    
            for(j=0;j<=260;j++)
            {
                a[j]=a[j]+b[j];
            }
            for(j=0;j<=260;j++)
            {
                a[j+1]+=a[j]/10;
                a[j]=a[j]%10;
            }
            for(j=260;j>=0;j--)
            {
                if(a[j]!=0)break;
            }
            for(k=0;j>=0;j--,k++)
            {
                str[i][k]='0'+a[j];
            }
            str[i][k]='\0';
    
        }
    }
    int main()
    {
        int n;
       add();
    
        while(scanf("%d",&n)!=EOF)
        {
            printf("%s\n",str[n]);
        }
    }
    

      

  • 相关阅读:
    du熊学斐波那契I
    《博客园精华集》分类索引
    C++中指针和引用的区别
    堆和栈的区别
    getch和getchar的区别
    class和struct
    ARM开发步骤
    ARM寻址方式
    存储器映射
    思维中的错误
  • 原文地址:https://www.cnblogs.com/acSzz/p/2367149.html
Copyright © 2011-2022 走看看