UVa 1610 Party Games——细节处理

网友投稿 243 2022-11-01


UVa 1610 Party Games——细节处理

大体思路是用string存储字符串,从小到大进行排序,因为n是偶数所以直接选出中间两个字符串left和right来计算结果。

从left的第一个元素开始,先把他+1,然后累加到ans中,如果此时ans小于right,那么ans一定是最优解,直接跳出循环输出结果。

如果ans大于或等于right,说明+1后ans大了,把他-1回到正常值,然后继续循环。。。。。。

然后要注意细节,首先+1时不能超过Z,然后注意处理最后一个元素,因为+1法对最后一个元素无效

最后庆幸没有空串

#include #include #include #include #include using namespace std;int main(){ int n, i; while (scanf("%d", &n) == 1 && n) { string s[n]; for (i = 0; i < n; i++) cin >> s[i]; sort(s, s + n); string left = s[n / 2 - 1], right = s[n / 2]; int len = left.size(); string ans; for (i = 0; i < len; i++) { if (left[i] + 1 <= 'Z' && i != len - 1) { ans += left[i] + 1; if (ans < right) break; ans[i]--; } else ans += left[i]; } cout << ans << endl; } return 0;}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java List的sort()方法改写compare()实现升序,降序,倒序的案例
下一篇:Problem B: 平面上的点——Point类 (II)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~