首页 > 代码库 > POJ 3617 Best Cow Line (贪心)
POJ 3617 Best Cow Line (贪心)
题意: 给定长度为N的字符串S,要构造一个长度为N的字符串T。起初T是一个空串,随后反复进行下列任意操作
1.从字符串S头部删除一个字符,加到T的尾部
2.从字符串S尾部删除一个字符,加到T的尾部
目的是,构造字典序尽可能小的字符串T
思路:简单贪心,比较当前字符串S首尾字符的大小,选取小的加入T,若两者相同,则比较下一个字符。
#include<stdio.h> #include<queue> #include<iostream> #include<algorithm> #include<math.h> #include<string.h> #define INF 0x3f3f3f3f #define LL long long #define MOD 100000007 #define MAXSIZE 10005 using namespace std; char s[MAXSIZE],t[MAXSIZE]; int main() { int n,lt; char ch; while(scanf("%d\n",&n)!=EOF) { lt=1; for(int i=1;i<=n;i++) scanf("%c%c",&s[i],&ch); int p1=1,p2=n; while(p1 <= p2) { if(s[p1] < s[p2]) { t[lt++] = s[p1]; p1++; } else if(s[p1] > s[p2]) { t[lt++] = s[p2]; p2--; } else { int t1 = p1; int t2 = p2; while(s[t1] == s[t2] && t1<t2) { t1++; t2--; } if(s[t1] <= s[t2]) { t[lt++] = s[p1]; p1++; } else { t[lt++] = s[p2]; p2--; } } } for(int i=1;i<=n;i++) { printf("%c",t[i]); if(i%80==0) printf("\n"); } } return 0; }
POJ 3617 Best Cow Line (贪心)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。