zoukankan      html  css  js  c++  java
  • ADV-拍卖

    #include<stdio.h>
    int shangpin[20];
    int p[10][4];
    int vlue;
    int data[10];
    int n,m;
    void dfs(int step,int money){
        if(step==n){
            if(money>vlue) vlue=money;
        return;
        }
                for(int j=0;j<5;j++){            //每个人五种情况  不买、买两个(3)、买三个 
                    if(j==0){                 //买两个商品 0与1
                        if(shangpin[p[step][0]]==1||shangpin[p[step][1]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][1]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][1]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==1){                 //买两个商品 1与2
                        if(shangpin[p[step][2]]==1||shangpin[p[step][1]]==1)
                            continue;
                        else {
                            shangpin[p[step][2]]=1;
                            shangpin[p[step][1]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][2]]=0;
                            shangpin[p[step][1]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==2){                  //买两个商品 0和2
                        if(shangpin[p[step][0]]==1||shangpin[p[step][2]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][2]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][2]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==3){                  //买三个商品商品 0 1和2
                        if(shangpin[p[step][0]]==1||shangpin[p[step][1]]==1||shangpin[p[step][2]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][1]]=1;
                            shangpin[p[step][2]]=1;
                            money+=3*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][1]]=0;
                            shangpin[p[step][2]]=0;
                            money-=3*p[step][3];
                        }
                    }
                    if(j==4){
                        dfs(step+1,money);
                    }
                }
    
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=0;i<m;i++)
            scanf("%d%d%d%d",&p[i][0],&p[i][1],&p[i][2],&p[i][3]);
        dfs(0,0);
        printf("%d",vlue);
    }
  • 相关阅读:
    MyBatisPartA
    概念:漏洞扫描技术
    概念:防火墙技术
    概念:认证技术与访问控制
    概念:为什么要引进密钥管理技术
    概念:数字签名、传统签名和认证
    概念:简述对称密码算法和公钥密码算法的区别
    概念:单向散列函数部分知识点
    Redis单线程QPS效率高的原因,以及redis6.0升级后的变化
    Mydql数据库缓存池Buffer Pool 冷热数据分离
  • 原文地址:https://www.cnblogs.com/lvcoding/p/6595552.html
Copyright © 2011-2022 走看看