文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>母函数 HDU 2082 找单词

母函数 HDU 2082 找单词

时间:2010-09-25  来源:sysuwhj

题意是,给出A~Z字母的个数,计算它们能组成单词的价值<=50的个数

也是母函数模板,判断时添加了一个最大值

#include<iostream>
using namespace std;

struct element
{
        int numvalue;
        int maxnum;
};
int main()
{
        int hold[26];
        element num[26];
        int tmp[100];
        int a[100];
        int N;
        int n;
        int sum;
        freopen("C:\\Users\\Haojian\\Desktop\\test.txt", "r", stdin);
        cin >> N;

        for (int i = 0; i < N; i++)
        {
                n = 0;
                sum = 0;
                for (int i = 0; i < 100; i++)
                {
                        tmp[i] = 0;
                        a[i] = 0;
                }

                for (int i = 0; i < 26; i++)
                {
                        cin >> hold[i];
                        if (hold[i])
                        {
                                num[n].maxnum = hold[i];
                                num[n].numvalue = i+1;
                                n++;
                        }//初始化,记录每个字母的价值和最大个数
                }
                
                for (int i = 0; i <= num[0].maxnum * num[0].numvalue; i += num[0].numvalue)
                        tmp[i] = 1;

                //母函数
                for (int i = 2; i <= n; i++)
                {
                        for (int j = 0; j <= 50; j++)
                                //添加一个最大个数的判断
                                for (int k = 0; k*(num[i-1].numvalue) + j <= 50 && k <= num[i-1].maxnum; k++)
                                        a[ k*(num[i-1].numvalue) + j] += tmp[j];

                        for (int j = 0; j <= 50; j++)
                        {
                                tmp[j] = a[j];
                                a[j] = 0;
                        }
                }

                for (int j = 1; j < 51; j++)
                        sum += tmp[j];
                cout << sum << endl;

        }
        return 0;
}
相关阅读 更多 +
排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载