POJ 3617 Best Cow Line
2016-07-24 12:40
519 查看
题目链接:POJ 3617
题意:给n个字符,如样例6个字符ACDBCB,从开头或者末尾选一个字符加到新字符串的末尾,使得到的新字符串字典序最小。
注意输出每行最多80个字符。
贪心,将原字符串与反转字符串比较来决定取哪里的字符串。
挑战程序设计竞赛2.2.3 字典序最小问题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[2010];
int main() {
int n;
while(~scanf("%d", &n)) {
getchar();
int i;
for(i = 0; i < n; i++) {
s[i] = getchar();
getchar();
}
int l = 0, r = n - 1;
int cnt = 0;
while(l <= r) {
cnt++;
bool left = false;
for(i = 0; l + i <= r; i++) {
if(s[l + i] < s[r - i]) {
left = true;
break;
}
else if(s[l + i] > s[r - i]){
left = false;
break;
}
}
if(cnt > 80) {
putchar('\n');
cnt = 1;
}
if(left) putchar(s[l++]);
else putchar(s[r--]);
}
putchar('\n');
}
return 0;
}
题意:给n个字符,如样例6个字符ACDBCB,从开头或者末尾选一个字符加到新字符串的末尾,使得到的新字符串字典序最小。
注意输出每行最多80个字符。
贪心,将原字符串与反转字符串比较来决定取哪里的字符串。
挑战程序设计竞赛2.2.3 字典序最小问题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[2010];
int main() {
int n;
while(~scanf("%d", &n)) {
getchar();
int i;
for(i = 0; i < n; i++) {
s[i] = getchar();
getchar();
}
int l = 0, r = n - 1;
int cnt = 0;
while(l <= r) {
cnt++;
bool left = false;
for(i = 0; l + i <= r; i++) {
if(s[l + i] < s[r - i]) {
left = true;
break;
}
else if(s[l + i] > s[r - i]){
left = false;
break;
}
}
if(cnt > 80) {
putchar('\n');
cnt = 1;
}
if(left) putchar(s[l++]);
else putchar(s[r--]);
}
putchar('\n');
}
return 0;
}
相关文章推荐
- VMWare清理Linux虚拟机磁盘
- BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
- 串口的流控制
- $q -- AngularJS中的服务 学习
- 欢迎使用CSDN-markdown编辑器
- HDU 5747 BestCoder Round #84 Aaronson (模拟)
- LeetCode-Largest Divisble Subset
- 16-07-24 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that
- 精简系统的几个网站
- 重新回归CSDN,重新与老朋友们见面
- 2016 北邮暑期训练3-C题(CodeForces 699B One Bomb)白痴题
- MyBatis 项目配置
- Linux进程通信(二)IPC消息队列
- 显示软键盘时,键盘没有自动弹出
- hive 的安装
- 3D编程知识--收集的帖子
- Android开发代号和对应API等级
- 欢迎使用CSDN-markdown编辑器
- python 使用模块augeas修改类似a=b的配置文件
- Ubuntu16.04切换工作区的问题