zoukankan      html  css  js  c++  java
  • 选择问题

    从m个数当中选择n个数,01规划结合搜索算法,

    用递归函数写的,感觉效率不高,测试了一下用例24 12,感觉程序实在是跑不动了,不过对于一些小的用例还是可以的,在想办法优化了,

    闲话少叙,上代码:

    #include <iostream>
    using namespace std;
    int data[25];
    int sum=0;
    
    void selectnfromm(int m,int n,int t)           //t表示进入到第t层递归,即判断是否要挑选第t个数
    {
        if(t==m)                        //判断是否已经检查了m个数
        {
            int k=0;
            for(int i=0;i<m;i++)
               if(data[i]==1)
                    k++;                //对于当前已经挑选的数计数;
            if(k==n)                    //判断是否是一个可行的方案
            {
                sum++;                  //方案数计算
                for(int i=0;i<m;i++)    //打印该方案
                if(data[i]==1)
                cout<<(i+1);
                cout<<endl;
            }
        }
        else
        {
            if(t<m)                      //搜索所有的方案
            {
                data[t]=1;               //赋值为1使递归
                selectnfromm(m,n,t+1);
                data[t]=0;               //赋值为0使递归
                selectnfromm(m,n,t+1);
            }
        }
    }
    
    int main()
    {
        int m,n;
        cout<<"输入m和n,从m中选n个(n<m<25):"<<endl;
        cin>>m>>n;
        for(int i=0;i<m;i++)
        data[i]=0;
        int t=0;
        cout<<"所有方案为:"<<endl;
        selectnfromm(m,n,t);
        cout<<"Sum:"<<sum<<endl;
    }
    
    
    
    
    
    
    态度决定高度,细节决定成败,
  • 相关阅读:
    go多种uuid生成方式
    go访问mysql基本语法
    go实现分布式唯一ID-snowflake(雪花算法)
    指定时间生成cron表达式
    zookeeper注册与发现
    短地址服务(二)
    java-redis
    短地址服务(一)
    cron表达式详解
    以后本blog所有内容全部转移,并在自建blog更新
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/3139182.html
Copyright © 2011-2022 走看看