zoukankan      html  css  js  c++  java
  • URAL1244. Gentlemen(背包)

    链接

    以前做的题 VJ太水了 数组里面的数可能会小于0 当时没判断

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 int dp[100010],w[110],path[110],o,f[110],n,ff[110];
     8 int flag,tw;
     9 void dfs(int sw,int v,int u)
    10 {
    11     int j,i;
    12     if(flag) return ;
    13     path[v] = u;
    14     if(sw==0)
    15     {
    16         flag  =1;
    17         for(i = 1; i <= v ; i++)
    18         ff[path[i]] = 1;
    19         return ;
    20     }
    21     if(sw<0) return ;
    22     for(j = 1; j <= n ; j++)
    23     {
    24         if(sw-w[j]<0)
    25         continue;
    26         if(!f[j]&&dp[sw-w[j]])
    27         {
    28             f[j] = 1;
    29             dfs(sw-w[j],v+1,j);
    30             f[j] = 0;
    31         }
    32     }
    33 }
    34 int main()
    35 {
    36     int i,j;
    37     cin>>tw;
    38     cin>>n;
    39     for(i = 1; i <= n ; i++)
    40     cin>>w[i];
    41     dp[0] = 1;
    42     for(i = 1 ; i <= n ;i++)
    43         for(j = tw ; j>=w[i] ; j--)
    44         {
    45             dp[j] += dp[j-w[i]];
    46         }
    47     int sw = tw;
    48     if(dp[tw]==0)
    49     cout<<"0
    ";
    50     else if(dp[tw]>1)
    51     cout<<"-1
    "<<endl;
    52     else
    53     {
    54         for(i = 1; i <= n ; i++)
    55         {
    56             if(sw-w[i]<0)
    57             continue;
    58             if(dp[sw-w[i]])
    59             {
    60                 f[i] = 1;
    61                 dfs(sw-w[i],1,i);
    62                 f[i] = 0;
    63             }
    64             if(flag) break;
    65         }
    66         int kk=0;
    67         for(i = 1; i <= n ; i++)
    68         {
    69             if(!ff[i])
    70             {
    71                 if(kk)
    72                 printf(" ");
    73                 printf("%d",i);
    74                 kk++;
    75             }
    76         }
    77         puts("");
    78     }
    79     return 0;
    80 }
    View Code
  • 相关阅读:
    docker快速部署DNS,实现快速上线
    图解CentOS系统启动流程
    MySQL/MariaDB读写分离配置
    分享使用PHP开发留言板
    LNMP+Redis架构部署
    Mysql/Mariadb主从复制
    记一次Ubuntu19无法安装docker源
    Tomcat部署项目的三个方法
    Ubuntu部署Tomcat Web服务
    Linux简单检查服务运行脚本
  • 原文地址:https://www.cnblogs.com/shangyu/p/3311882.html
Copyright © 2011-2022 走看看