zoukankan      html  css  js  c++  java
  • 2016HUAS_ACM暑假集训4K

    我不知道怎么用DP,不过DFS挺好用。DFS思路很明显,搜索、记录,如果刚好找到总价值的一半就说明搜索成功。

    题目大意:每组6个数,分别表示价值1到6的物品个数。现在问你能不能根据价值均分。

    Sample Input                                  //6种价值物品的个数,全为0时结束

    1 0 1 2 0 0

    1 0 0 0 1 1

    0 0 0 0 0 0

    Sample Output                              //注意格式,空两行

    Collection #1:Can't be divided.

    Collection #2:Can be divided.

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int N[7];//存数量
     5 int Sum,T=1,i;
     6 bool flag;//标记
     7 
     8 void dfs(int s,int p)
     9 {
    10     if(s==Sum/2)//找到了价值刚好为一半
    11     {
    12         flag=true;
    13         return;
    14     }
    15     for(int i=p;i>=1;i--)//搜索,似乎和DP有点像啊
    16     {
    17         if(N[i])
    18         {
    19             if(s+i<=Sum/2)
    20             {
    21                 N[i]--;
    22                 dfs(s+i,i);
    23                 if(flag)
    24                     break;
    25             }
    26         }
    27     }
    28     return;
    29 }
    30 
    31 
    32 int main()
    33 {
    34     while(1)
    35     {
    36         Sum=0;
    37         for(i=1;i<=6;i++)
    38         {
    39             cin>>N[i];
    40             Sum+=i*N[i];//算出价值总和
    41         }
    42         if(!Sum)//全0
    43             break;
    44         if(Sum%2)//总价值为奇数时不成立,剪枝
    45         {
    46             cout<<"Collection #"<<T<<":
    Can't be divided.
    
    ";
    47             T++;
    48             continue;
    49         }
    50 
    51         flag=false;
    52 
    53         dfs(0,6);
    54 
    55         if(flag)
    56         {
    57             cout<<"Collection #"<<T<<":
    Can be divided.
    
    ";
    58             T++;
    59             continue;
    60         }
    61         else
    62         {
    63             cout<<"Collection #"<<T<<":
    Can't be divided.
    
    ";
    64             T++;
    65             continue;
    66         }
    67     }
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    基于node.js 的 websocket的移动端H5直播开发
    c# 基于RTMP推流 PC+移动端 拉流播放
    Android Studio解决Error:moudle not specified
    能ping通域名,却不能上网
    转 Postman访问Webapi的Get/Post/Put/Delte请求
    Sqlite 参数化 模糊查询 解决方案
    autofac使用总结
    windows7 安装pytorch
    linux nginx 如何配置多个端口
    委托应用实例演变
  • 原文地址:https://www.cnblogs.com/ankelen/p/5743668.html
Copyright © 2011-2022 走看看