zoukankan      html  css  js  c++  java
  • Ignatius and the Princess III(方案背包+搜索)

    就是问你,n这个数可以被多少种方案组成。

    比如:

      

    算是,方案+完全背包的模板题了。

    #include<iostream>
    #include<cstring>
    using namespace std;
    int dp[150];
    int main()
    {
        int n;
        while (~scanf("%d", &n)){
            memset(dp, 0, sizeof(dp));
            dp[0] = 1;
            for (int i = 1; i <= n;++i)
            for (int j = i; j <=n; ++j)
                dp[j] += dp[j - i];
            printf("%d
    ", dp[n]);
        }
    }

    我试了试暴力搜索,不幸超时,搜在50以内还可以

    #include<iostream>
    #include<cstring>
    using namespace std;
    int num[150],sum, ans;
    void dfs(int cur, int n)
    {
        if (sum == n)ans++;
        else
        {
            for (int i = 1; i <= n; ++i)
            {
                if (i >= num[cur - 1])
                {
                    sum += i;
                    if (sum <= n)
                    {
                        num[cur] = i;
                        dfs(cur + 1, n);
                        sum -= i;
                    }
                    else{
                        sum -= i;
                        return;
                    }
                }
            }
        }
    }
    
    int main()
    {
        int n;
        while (~scanf("%d", &n))
        {
            sum = 0, ans=0;
            memset(num, 0, sizeof(num));
            dfs(1, n);
            printf("%d
    ", ans);
        }
    }
  • 相关阅读:
    web测试方法总结
    我认为测试应该掌握的SQL语句
    monkey(1)
    冒烟测试
    PC客户端测试总结
    常见测试点总结
    测试基本概念
    测试主要环节
    手机app常见bug积累
    MySQL面试题集锦
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/10065381.html
Copyright © 2011-2022 走看看