您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: