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);
        }
    }
  • 相关阅读:
    舵机驱动-GPIO MG995 STM32
    Ymodem协议-接收
    IAP注意事项
    stm32系统时钟配置,标准库v3.5
    FREERTOS移植(MDK 、STM32F103)
    C语言常量后缀
    回调函数
    运算符记忆口诀
    C语言函数指针
    frp 搭建内网穿透
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/10065381.html
Copyright © 2011-2022 走看看