Divideing Jewels

时间限制: 1 Sec  内存限制: 128 MB
提交: 63  解决: 17
[提交][状态]

题目描述

Mary
and Rose own a collection of jewells. They want to split the collection
among themselves so that both receive an equal share of the jewels.
This would be easy if all the jewels had the same value, because then
they could just split the collection in half. But unfortunately, some of
the jewels are larger, or more beautiful than others. So, Mary and Rose
start by assigning a value, a natural number between one and ten, to
each jewel. Now they want to divide the jewels so that each of them gets
the same total value. Unfortunately, they realize that it might be
impossible to divide the jewels in this way (even if the total value of
all jewels is even). For example, if there are one jewel of value 1, one
of value 3 and two of value 4, then they cannot be split into sets of
equal value. So, they ask you to write a program that checks whether
there is a fair partition of the jewels.

输入

Each
line in the input file describes one collection of jewels to be
divided. The lines contain ten non-negative integers n1 , . . . , n10 ,
where ni is the number of jewels of value i. The maximum total number of
jewells will be 10000.
The last line of the input file will be "0 0 0 0 0 0 0 0 0 0"; do not process this line.

输出

For
each collection, output "#k:", where k is the number of the test case,
and then either "Can be divided." or "Can't be divided.".
Output a blank line after each test case.

样例输入

1 0 1 2 0 0 0 0 2 0
1 0 0 0 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0

样例输出

#1:Can't be divided.

#2:Can be divided.

提示

来源

第五届河南省大学生程序设计竞赛

你一定要好好看题,一定先要==||

#include<iostream>
#include<cstdio>

using namespace std;

int sum[15], tot, flag;

void DFS(int q)   // q用来存现在分到的价值
{
      int i;
      if(flag)
          return ;
      if(q == tot)  //如果价值==tot就是可以平分
      {
          flag = 1;
          return ;
      }
      for(i = 10; i > 0; --i)  //从后往前加,后边价值大
      {
          if(sum[i] > 0 && q+i <= tot)  //  i 是价值,sum【i】是i 这个价值的有几个~
          {
              sum[i]--;  //加上一个就减去一个
              DFS(q+i); //看q+i 是否够一半
              if(flag)
                  return ;
          }
      }
}
int main()
{
      int i, t;
 
      for(t = 1; ; t++)  //循环开始
      {
            tot = 0;
            for(i = 1; i <= 10; i++)
            {
                cin >> sum[i];
                tot += sum[i] * i;  // sum【i】是i 这个价值的有几个!!tot总价值
            }

     if(!tot)
                break; // 价值为零,循环结束,程序结束

     if(tot & 1)  //tot是奇数
            {
                  printf("#%d:Can't be divided.\n", t);
                  continue;
            }
            tot >>= 1; // >>位运算里边的东西,可以百度一下,这句话意思就是tot /=2;
            flag = false; 
            DFS(0);

     if(flag)
                  printf("#%d:Can be divided.\n", t);
            else printf("#%d:Can't be divided.\n", t);
      }
    return 0;
}

sum【i】是i 这个价值的珠宝有几个!!

~~

分享更好链接:

http://www.cnblogs.com/dongsheng/archive/2013/04/22/3036160.html

Divideing Jewels的更多相关文章

  1. nyoj 546——Divideing Jewels——————【dp、多重背包板子题】

    Divideing Jewels 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Mary and Rose own a collection of jewells. ...

  2. 河南省第五届ACM程序设计大赛

    D:   遥 控 器 #include<cstdio> #include<cstring> #include<iostream> #include<algor ...

  3. hdu.1044.Collect More Jewels(bfs + 状态压缩)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  4. HDU 1044 Collect More Jewels(BFS+DFS)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. hdu 1044 Collect More Jewels(bfs+状态压缩)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  6. codechef Jewels and Stones 题解

    Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...

  7. LeetCode --> 771. Jewels and Stones

    Jewels and Stones You're given strings J representing the types of stones that are jewels, and S rep ...

  8. 771. Jewels and Stones

    You're given strings J representing the types of stones that are jewels, and S representing the ston ...

  9. [Swift]LeetCode771. 宝石与石头 | Jewels and Stones

    You're given strings J representing the types of stones that are jewels, and S representing the ston ...

随机推荐

  1. JavaScript.convertArray

    function convertArray(nodeList){     var arr = []     if(Array.prototype.slice){         arr = [].sl ...

  2. 二进制安装kubernetes集群

    链接地址 https://www.cnblogs.com/leleyao/p/10453848.html  安装etcd 证书制作 apiserver 证书 [root@master01 ssl]# ...

  3. seaborn教程2——颜色调控

    原文转载 https://segmentfault.com/a/1190000014966210 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风 ...

  4. Helm教程

    1.概述 Helm是k8s的包管理工具,类似Linux系统常用的 apt.yum等包管理工具. 使用helm可以简化k8s应用部署 2.基本概念 Chart:一个 Helm 包,其中包含了运行一个应用 ...

  5. Ajax爬取豆瓣电影目录(Python)

    下面的分析相当于一个框架,搞懂之后,对于类似的文字爬取,我们也可以实现.就算不能使用Ajax方法,我们也能够使用相同思想去爬取我们想要的数据. 豆瓣电影排行榜分析 网址:https://movie.d ...

  6. elasticsearch 基础 —— 处理冲突及乐观并发控制

    处理冲突 当我们使用 index API 更新文档 ,可以一次性读取原始文档,做我们的修改,然后重新索引 整个文档 . 最近的索引请求将获胜:无论最后哪一个文档被索引,都将被唯一存储在 Elastic ...

  7. navicat连接Oracle数据库提示错误 ORA-12514

    这个是服务名写错了,服务名的字段在Oracle安装路径里找 这个我的服务名,这好像是重装Oracle就会变我之前的事orcl,重装之后发现连接不上数据库了,就倔强着找到了它 备注:如果是连接远程Ora ...

  8. django post get

    GET请求和POST请求 GET请求: 1. 浏览器请求一个页面 2. 搜索引擎检索关键字的时候 POST请求: 1. 浏览器向服务端提交数据,比如登录/注册等 判断提交方式: if request. ...

  9. go语言从例子开始之Example39.使用函数自定义排序

    有时候我们想使用和集合的自然排序不同的方法对集合进行排序.例如,我们想按照字母的长度而不是首字母顺序对字符串排序.这里是一个 Go 自定义排序的例子. Example: package main im ...

  10. OpenStack虚拟机网络问题

    当发现你的OpenStack虚拟机网络有问题,不妨先试一下这16个步骤   1. Security Group全部打开,这是最基本的,但是很多人容易忘记 其实遇到过无数这种场景了,Debug了半天网络 ...