当前位置: 首页 > 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.jsqmd.com/news/1066575/

相关文章:

  • Claude+Opus4.7原生集成:重构Word为语义级文档操作系统
  • Golin自动化工具在等保合规中的应用:从主机检查到报告生成
  • 2026图片去除背景工具保姆级教程!免费在线/手机/电脑一键抠图指南 - AI测评专家
  • 万安县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 2026松潘县黄金回收铂金回收彩金回收白银回收全攻略:五家实力靠谱门店横向评测附避坑指南及联系方式 - 亦辰小黄鸭
  • 万年县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 2026年上海专业老房翻新装修公司排行 本土靠谱装企盘点 - 起跑123
  • 从注解到文档自动化:用Gemini镜像站为PHP/Java项目生成高质量API文档与代码注释
  • GitHub Actions + OIDC + Vault 实现开发者优先的密钥管理
  • 枣强县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • AVR32EB SPI/TWI中断驱动通信:从寄存器配置到ISR实战
  • 导出投票数据还要花钱?这个小程序全程免费导出 - 微信投票小程序
  • Packer+Terraform在DigitalOcean上自动化部署Vault服务
  • 2026绥阳县黄金回收铂金回收彩金回收白银回收全攻略:五家实力靠谱门店横向评测附避坑指南及联系方式 - 亦辰小黄鸭
  • 永和县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • Shipit自动化部署Node.js到CentOS 7生产环境实战
  • 万荣县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY
  • 2026图片抠图操作方法大全,手机电脑各类抠图软件手把手保姆级教程 - AI测评专家
  • 昌吉吉木萨尔县安置小区屋顶楼顶批量防水,墙面阳台检修,阳光房彩钢地下室防潮维保 - 天堂海洋
  • Ubuntu 20.04 安装 Composer 2.5 全流程深度解析
  • MC9S08LL16 SPI与TPM实战:寄存器配置、中断处理与避坑指南
  • 常州多家黄金回收实测,哪家秤准价实在 - 奢侈品交易观察员
  • CPPM证书含金量怎么样?企业认可吗? - 众智商学院课程中心
  • 深入解析MC68341 DMA控制器:架构、模式与实战配置
  • GLM-5.1企业级落地实测:文档解析、代码生成与等保合规深度解析
  • 新疆乌鲁木齐保险理赔律师保险拒赔律所推荐君审律所李鹏律师(新疆乌鲁木齐有办案团队) - 资讯报道
  • Python http.server 深度解析:从命令行到HTTPS生产级实践
  • Java最长回文子串的工程化实现与JVM级优化
  • 2026年绝缘聚四氟乙烯薄膜专业供应商:高绝缘、耐高温、防腐蚀薄膜厂家深度解析 - 企业推荐官【官方】
  • 望都县黄金回收靠谱店铺实测排行:2026本地门店实测,规避隐形扣费套路及联系方式推荐 - 前途无量YY