zoukankan      html  css  js  c++  java
  • 【HDOJ】1502 Regular Words

    大数+DP,感觉这个DP有点儿抽象,而且这个是大数,wa了很多次。

    #include <stdio.h>
    
    #define MAXNUM 61
    #define MAXLEN 100
    
    typedef struct {
        char val[MAXLEN];
    } src_st;
    
    src_st dp[MAXNUM][MAXNUM][MAXNUM];
    
    void BigIntAdd(src_st *a, src_st *b) {
        int i;
    
        for (i=0; i<MAXLEN; ++i) {
            a->val[i] += b->val[i];
            if (a->val[i] >= 10) {
                a->val[i+1]++;
                a->val[i] -= 10;
            }
        }
    }
    
    int main() {
        int i, j, k;
    
        dp[0][0][0].val[0] = 1;
    
        for (i=1; i<MAXNUM; ++i)
            for (j=0; j<=i; ++j)
                for (k=0; k<=j; ++k) {
                    memset(dp[i][j][k].val, 0, sizeof(dp[i][j][k].val));
                    if (i-1>=j)
                        BigIntAdd(&dp[i][j][k].val, &dp[i-1][j][k].val);
                    if (j-1>=k)
                        BigIntAdd(&dp[i][j][k].val, &dp[i][j-1][k].val);
                    if (k)
                        BigIntAdd(&dp[i][j][k].val, &dp[i][j][k-1].val);
                }
    
        while (scanf("%d", &k) != EOF) {
            j = 0;
            for (i=MAXLEN-1; i>=0; i--) {
                if (j==0 && dp[k][k][k].val[i] == 0)
                    continue;
                if (j==0 && dp[k][k][k].val[i] != 0)
                    j = 1;
                printf("%c", dp[k][k][k].val[i]+'0');
            }
            printf("
    
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    HTML if条件注释解读
    Springboot整合logback日志系统
    Springboot @Valid 参数校验
    JDK1.8 版的if else
    Android获取手机定位坐标
    CentOS8安装JDK
    Vue全局配置文件
    git学习
    百度前端面试题—基础
    前端知识网络
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3590160.html
Copyright © 2011-2022 走看看