⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2874340_ac_1983ms_300k.cc

📁 做的POJ的一些题目
💻 CC
字号:
#include<iostream>
#include<iomanip>
using namespace std;
typedef struct
{
    int v;
    int w;
    int sign;    
}node;
int n,d,best=0;
void f(node mg[10],int wa,int wb,int s,int r,int ab,int x)
{
    /*if(s+r<=best)
      return;*/
    if(x==n)
    {
        if(s>best)        
          best=s;
        return;
    }
    if(ab==1)
    {
        for(int i=0;i<n;i++)
            if(mg[i].sign==0)
            {
                mg[i].sign=1;
                if(mg[i].w+wa>wb+d)
                  f(mg,mg[i].w+wa,wb,s,r-mg[i].v,ab+1,x+1);
                else
                   f(mg,mg[i].w+wa,wb,s,r-mg[i].v,ab,x+1);   
                mg[i].sign=0;               
            }        
    }    
    else
    {
          for(int i=0;i<n;i++)
            if(mg[i].sign==0)
            {
                mg[i].sign=2;
                if(mg[i].w+wb>wa+d)
                  f(mg,wa,wb+mg[i].w,s+mg[i].v,r-mg[i].v,1,x+1);  
                else
                  f(mg,wa,wb+mg[i].w,s+mg[i].v,r-mg[i].v,ab,x+1);   
                mg[i].sign=0;               
            }    
    }
}
int main()
{
    scanf("%d %d",&n,&d);
    node mg[n];
    int sum=0;
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&mg[i].w,&mg[i].v); 
        mg[i].sign=0;     
        sum=sum+mg[i].v;
    }
    f(mg,0,0,0,sum,1,0);
    printf("%d\n",best);
    system("pause");
    return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -