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);
    }
  • 相关阅读:
    TCP/UDP模型
    分时技术
    Linux文件浏览命令
    Maven下载私服上的jar包(全局)
    Maven下载私服上的jar包
    Maven将中央仓库修改为阿里云的仓库地址
    数据结构之算法初涉(2)
    数据结构之概念初涉(1)
    JAVA中GridBagLayout布局管理器应用详解
    C++数据结构中的基本算法排序
  • 原文地址:https://www.cnblogs.com/lvcoding/p/6595552.html
Copyright © 2011-2022 走看看