zoukankan      html  css  js  c++  java
  • UVA 10912 Simple Minded Hashing

    UVA_10912

        数据乍看起来比较大,实际上长度不会超过26,总的权值不会超过351。

        我们可以用f[i][j][k]表示选到第i个字符时当前字符串长度为j总权值为k的情况总数,由于字符i可选也可不选,那么f[i][j][k]=f[i-1][j][k]+f[i-1][j-1][k-i],边界为f[0][0][0]=1。

    #include<stdio.h>
    #include<string.h>
    int f[30][30][400];
    int L, S;
    void prepare()
    {
    int i, j, k;
    memset(f, 0, sizeof(f));
    f[0][0][0] = 1;
    for(i = 1; i <= 26; i ++)
    for(j = 0; j <= i; j ++)
    for(k = 0; k <= 351; k ++)
    {
    f[i][j][k] = f[i - 1][j][k];
    if(j && k >= i)
    f[i][j][k] += f[i - 1][j - 1][k - i];
    }
    }
    int main()
    {
    int t = 0;
    prepare();
    for(;;)
    {
    scanf("%d%d", &L, &S);
    if(!L && !S)
    break;
    printf("Case %d: ", ++ t);
    if(L > 26 || S > 351)
    printf("0\n");
    else
    printf("%d\n", f[26][L][S]);
    }
    return 0;
    }


  • 相关阅读:
    U盘支持启动windows和Linux
    emacs安装
    npm 安装指定的第三方包
    npm安装第三方包
    npm 安装淘宝镜像
    ssm 环境搭建
    gitBook安装简介
    git 博客搭建
    git 多人开发
    git ssh提交
  • 原文地址:https://www.cnblogs.com/staginner/p/2291308.html
Copyright © 2011-2022 走看看