当前位置: 首页 > news >正文

UVa 574 Sum It Up

题目描述

题目要求从给定列表中找出所有不同的子集,其和等于目标数ttt。列表中的数字按非递增顺序给出,可能有重复。输出时,每个子集中的数字按非递增顺序排列,且子集之间按字典序降序排列(即第一个数字大的优先,相同则比较第二个,依此类推)。若无解,输出NONE

输入格式

输入包含多个测试用例,每行一个。每行第一个整数ttt,第二个整数nnn,后面nnn个整数。若n=0n = 0n=0则输入结束。t<1000t < 1000t<10001≤n≤121 \le n \le 121n12,每个数<100< 100<100

输出格式

对于每个测试用例,先输出Sums of t:,然后每行一个子集(数字之间用+连接),按降序排列。若无解,输出NONE

样例

输入

4 6 4 3 2 2 1 1 5 3 2 1 1 400 12 50 50 50 50 50 50 25 25 25 25 25 25 25 0 0

输出

Sums of 4: 4 3+1 2+2 2+1+1 Sums of 5: NONE Sums of 400: 50+50+50+50+50+50+25+25+25+25 50+50+50+50+50+25+25+25+25+25+25

题目分析

本题的核心是子集和问题,由于n≤12n \le 12n12,可以使用回溯法枚举所有子集。

回溯算法

  • 按顺序遍历列表,每个数字可选或不选。
  • 由于数字可能有重复,使用集合solutionssolutionssolutions去重。
  • 回溯时,若当前和等于ttt,则将所选数字组成的字符串加入集合。
  • 若当前和大于ttt,则剪枝。

输出排序

由于列表本身是非递增顺序,且回溯按顺序选择,生成的子集自然满足降序。但需要去重后按降序输出,可以使用集合自动排序(字符串字典序降序对应数字降序)。

复杂度分析

最多212=40962^{12} = 4096212=4096种子集,可接受。

代码实现

// Sum It Up// UVa ID: 574// Verdict: Accepted// Submission Date: 2016-08-17// UVa Run Time: 0.040s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intnumber[12],visited[12],t,n,counter;string text[12];set<string>solutions;voiddfs(intdepth,intsum){if(sum==t){string sequence;boolfirst_number=true;for(inti=0;i<n;i++)if(visited[i]){if(first_number)first_number=false;elsesequence+='+';sequence+=text[i];}if(solutions.find(sequence)==solutions.end()){cout<<sequence<<'\n';solutions.insert(sequence);}}else{for(inti=depth;i<n;i++)if(!visited[i]&&sum+number[i]<=t){visited[i]=1;dfs(depth+1,sum+number[i]);visited[i]=0;}}}intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);while(cin>>t>>n,t){for(inti=1;i<=n;i++){cin>>number[i-1];text[i-1]=to_string(number[i-1]);}cout<<"Sums of "<<t<<":\n";solutions.clear();memset(visited,0,sizeof(visited));dfs(0,0);if(solutions.size()==0)cout<<"NONE\n";}return0;}
http://www.gsyq.cn/news/1578514.html

相关文章:

  • Packer+Terraform在DigitalOcean上自动化部署Vault服务
  • AVR32EB SPI/TWI中断驱动通信:从寄存器配置到ISR实战
  • GLM-5.1企业级落地实测:文档解析、代码生成与等保合规深度解析
  • Selenium Web自动化实战:从环境搭建到完整案例解析
  • 终极摄像头流媒体转换解决方案:go2rtc让你的监控系统零延迟、全兼容
  • 新疆乌鲁木齐保险理赔律师保险拒赔律所推荐君审律所李鹏律师(新疆乌鲁木齐有办案团队) - 资讯报道
  • Navicat重置试用期终极指南:macOS用户必备的14天试用期破解方案
  • 2026实力之选:广东东莞工伤法律服务的专业品牌机构 - 企业推荐官【官方】
  • 2026年旋转蒸发仪厂家选型指南:代表性品牌深度解析 - 速递信息
  • 青岛街坊常去黄金回收店,2026实测性价比榜单 - 名奢变现站
  • vsftpd chroot_local_user原理与Ubuntu 12.04安全配置实战
  • 闽侯县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 上海黄金回收口碑TOP5榜单,不压秤无损耗,闲置首饰变现靠谱商家排名 - 奢品小当家
  • GPT-4o提示词工程:从系统提示到流式响应的四大技术锚点
  • 微山县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 基于大语言模型的AI网页自动化:从LaVague原理到实战搭建
  • 2026黔东南渗漏维修靠谱机构盘点 全屋防水堵漏正规企业实力排名一览 - 宅安选房屋修缮
  • Windows系统Docker Desktop安装配置与实战入门指南
  • 尉氏县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 龙游县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 智驾VLA模型从7B到0.1B的工程化压缩实践
  • 2026衡山县黄金回收铂金回收彩金回收白银回收全攻略:五家实力靠谱门店横向评测附避坑指南及联系方式 - 亦辰小黄鸭
  • CentOS 8私有CA实战:OpenSSL+easy-rsa构建生产级PKI
  • 长沙卖黄金包包靠谱门店推荐!实测奢二网、归禾、茉奢、观汇全流程无套路指南 - 生活时报
  • 2026 郑州金水区百达翡丽回收首选本地直营门店白皮书 耀辉领衔行业标杆 - 奢侈品回收
  • iOS自动化测试环境搭建:Cucumber+Appium+WDA全流程详解与避坑指南
  • 2026 年 6 月郑州上街区奢侈品黄金回收门店榜单推荐 行业标杆耀辉全国连锁实力盘点 - 奢侈品回收
  • 深入解析MCF51QE128中断控制器:CF1_INTC架构、编程与性能优化
  • 2026青岛全城黄金回收店推荐,支持上门免费估价 - 名奢变现站
  • WinLicense 3.x加密程序脱壳实战:基于Unlicense与Scylla的自动化内存转储