news 2026/10/4 3:10:35

UVA-1610 聚会游戏 题解答案代码 算法竞赛入门经典第二版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVA-1610 聚会游戏 题解答案代码 算法竞赛入门经典第二版

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版

题目不难,但是场景有点多,需要注意细节。

首先将字符串排序,找到最中间的两个字符串。对这两个字符串找一个可以分割的字符串即可。

注意条件是:优先字符串长度最小,其次是字典序最小。

因此需要注意两个字符串什么时候开始不一样,不一样的字符中间是否能容下其它字符,后续是否还有字符等,具体场景可直接查看代码。

AC代码

#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; vector<string> ve; void output() { for (auto ip = ve.begin(); ip != ve.end(); ++ip) cout << *ip << endl; } string computed(int a) { string s; int i, j; for (i = 0; i < ve[a - 1].size(); ++i) { if (i >= ve[a].size()) break; if (ve[a][i] == ve[a - 1][i]) s.push_back(ve[a][i]); else if (ve[a][i] == ve[a - 1][i] + 1) { if (i == ve[a].size() - 1 && i == ve[a - 1].size() - 1) { return ve[a - 1]; } if ((i != ve[a].size() - 1) && (i != ve[a - 1].size() - 1)) { s.push_back(ve[a][i]); return s; } if ((i == ve[a].size() - 1) && (i != ve[a - 1].size() - 1)) { s.push_back(ve[a - 1][i]); for (j = i + 1; j < ve[a - 1].size(); ++j) { if (ve[a - 1][j] == 'Z') s.push_back(ve[a - 1][j]); else { if (j == ve[a - 1].size() - 1) s.push_back(ve[a - 1][j]); else s.push_back(ve[a - 1][j] + 1); return s; } } return s; } if ((i != ve[a].size() - 1) && (i == ve[a - 1].size() - 1)) { return ve[a - 1]; } } else { if (i == ve[a].size() - 1 && i == ve[a - 1].size() - 1) { return ve[a - 1]; } if (i != ve[a].size() - 1 && i != ve[a - 1].size() - 1) { s.push_back(ve[a - 1][i] + 1); return s; } if (i == ve[a].size() - 1 && i != ve[a - 1].size() - 1) { s.push_back(ve[a - 1][i] + 1); return s; } if (i != ve[a].size() - 1 && i == ve[a - 1].size() - 1) { s.push_back(ve[a - 1][i] + 1); return s; } } } if (i < ve[a].size()) return ve[a - 1]; return s; } int main() { int n, i, j; string s; while (cin >> n && n > 0) { ve.clear(); for (i = 0; i < n; ++i) { cin >> s; ve.push_back(s); } sort(ve.begin(), ve.end()); i = n / 2; cout << computed(i) << endl; // output(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 3:06:58

FPGA DDR4用户接口详解:从Native到AXI4的握手时序与状态机设计

做过FPGA里DDR4读写的人&#xff0c;十有八九都绕不开“IP的用户接口”这道坎。Xilinx的MIG IP、Intel的EMIF IP&#xff0c;配置界面填来填去&#xff0c;最后落到用户逻辑面前的&#xff0c;就是一堆或叫app_*或叫s_axi_*的信号。很多刚上手的同学在IP配置阶段挺顺利&#xf…

作者头像 李华
网站建设 2026/10/4 3:03:58

JSP+SSM网上服装销售系统毕业设计:从环境配置到部署避坑全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 3:03:33

R语言分类变量统计描述:避开table和prop.table的三大陷阱

1. 为什么“分类变量的统计描述”在R里常被当成“会用就行”的小事&#xff0c;却总在汇报和建模前翻车&#xff1f;你有没有过这样的经历&#xff1a;刚用table()跑出一个频数表&#xff0c;兴冲冲贴进报告里&#xff0c;结果被同事一句“这比例没标准化吧&#xff1f;”当场问…

作者头像 李华
网站建设 2026/10/4 3:02:16

MATLAB频谱分析避坑指南:采样率、FFT点数与PSD校准

1. 为什么“一行代码”频谱图反而最容易出错——从MATLAB新手的三个典型崩溃现场说起你刚在知乎看到标题&#xff1a;“一行代码实现MATLAB频谱、功率谱图”&#xff0c;心里一热&#xff0c;复制粘贴进命令行&#xff0c;回车——结果弹出红色报错&#xff1a;Undefined funct…

作者头像 李华
网站建设 2026/10/4 3:02:03

Django兴趣班预约管理系统毕设源码:从环境搭建到预约逻辑实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华