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

UVa 598 Bundling Newspapers

题目描述

题目要求生成给定报纸列表的所有指定大小的子集,并按字典序输出。输入给出子集大小范围(单个数字、两个数字或*表示全部),每行一个报纸名。输出按子集大小分组,每组内按字典序输出所有子集。

输入格式

第一行一个整数MMM,表示数据集个数,后面跟一个空行。每个数据集的第一行是子集大小说明(*na b)。接下来若干行报纸名,以空行结束。两个连续数据集之间由一个空行分隔。

输出格式

对于每个数据集,按子集大小分组输出。每组先输出Size X,然后每行一个子集(报纸名用逗号加空格分隔)。每组后跟一个空行。两个数据集输出间有一个空行。

样例

输入

1 2 3 Times Herald-Tribune Post New Advocate

输出

Size 2 Times, Herald-Tribune Times, Post Times, New Advocate Herald-Tribune, Post Herald-Tribune, New Advocate Post, New Advocate Size 3 Times, Herald-Tribune, Post Times, Herald-Tribune, New Advocate Times, Post, New Advocate Herald-Tribune, Post, New Advocate

题目分析

本题的核心是生成组合,并按字典序输出。

组合生成

使用回溯法生成所有大小为kkk的组合,按输入顺序依次选择,保证字典序。

输出格式

注意:每组输出后有一个空行,两个数据集输出间也有一个空行。

复杂度分析

最多C(12,6)=924C(12,6) = 924C(12,6)=924个组合,可接受。

代码实现

// Bundling Newspapers// UVa ID: 598// Verdict: Accepted// Submission Date: 2016-08-12// UVa Run Time: 0.010s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intpapers[12],used[12],name_count;string names[12];voiddfs(intdepth,intlast,intn){if(depth==n){for(inti=0;i<n;i++){if(i>0)cout<<", ";cout<<names[papers[i]];}cout<<'\n';}else{for(inti=last;i<name_count-(n-1)+depth;i++){used[i]=1;papers[depth]=i;dfs(depth+1,i+1,n);used[i]=0;}}}intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);string line;getline(cin,line);intM=stoi(line);getline(cin,line);for(intcases=1;cases<=M;cases++){if(cases>1)cout<<'\n';string range;getline(cin,range);name_count=0;while(getline(cin,line),line.length()>0)names[name_count++]=line;inta,b;if(range.front()=='*')a=1,b=name_count;else{istringstreamiss(range);iss>>a;if(!(iss>>b))b=a;}for(inti=a;i<=b;i++){cout<<"Size "<<i<<'\n';memset(papers,-1,sizeof(papers));memset(used,0,sizeof(used));dfs(0,0,i);cout<<'\n';}}return0;}
http://www.jsqmd.com/news/1075753/

相关文章:

  • AI SEO避坑清单:17个实操错误与可执行校验方案
  • FedAvg联邦学习原理与工业级实战指南
  • Syncthing终极部署指南:三步构建你的私有同步网络
  • GeekDesk极客桌面:如何用一款工具提升3倍桌面操作效率?
  • 使用 Thread 子类创建线程和使用 Thread 直接创建线程(Runnable接口)的区别
  • Sketch Measure插件终极教程:5分钟掌握自动化设计标注,提升团队协作效率
  • 近期量化学习四步走,AI 只适合跟着阶段用
  • 质量管理工具-矩阵数据分析法
  • Python实现LDA主题模型:主题分布、主题强度与强度演变分析全攻略
  • 【招聘】第二篇:自下而上:为什么最好的招聘决策,往往不应该从HR开始
  • 2016-2022年中国10米分辨率逐年不透水面数据集(CAIS)
  • Seedance 2.5视频生成模型七月登场:30秒原生直出+50素材+周星驰IP的国产视频新纪元
  • 如何选择macOS Intel Wi-Fi驱动的最佳方案:itlwm与AirportItlwm决策指南
  • 在STM32H743上部署轻量口罩检测模型的全流程实践
  • 2014-2026年中国全域公园绿地矢量数据集|逐年更新|生态底图
  • AI旅行建议防坑指南:五步交叉验证法实战
  • Adobe XD 59.0安装包免费下载及详细安装教程
  • 运维转大模型:团队协作中的使用边界
  • 戴森V6/V7电池开源固件升级完全指南:解锁隐藏的电芯平衡功能
  • 一文读懂:百年赋老鹰茶到底是不是古树茶?
  • 技术洞察:Social Analyzer社交情报分析系统架构解析
  • Transformer做电池SOH估算:先别急,直接用反而最差
  • Zoo Text-to-CAD:用自然语言驱动机械设计革命
  • SkillOpt 让你的 Skill 实现自进化
  • 【招聘】第五篇:边界之外:为什么你下一个最重要的候选人,往往不在你熟悉的圈子里
  • 手写一个基于Qt的轻量级示波器界面,附源码
  • [1364]bcrypt用法--密码哈希
  • 浏览器中的微信革命:wechat-need-web插件让你随时随地聊天
  • OAuth2 登录与群 Webhook 开放接入
  • JDK 9 的 PlatformClassLoader 只是简单改个名吗?