标签:poj algorithm greedy acm 算法
/* poj 3617 best cow line
题意为给定长度为N的字符串S,需要构造出长度为N的字符串T,开始的时候T是一个空串
随后只能反复从S的开始或者结尾的地方取一个字符接到T的末尾,要求是根据这个规则
构造出字典序尽可能小的字符串T
算法设计:每次都比较末尾和开头的字符,如果不想等,则选择字典序较小的那个字符
接到T的末尾,这样构造出来的字符串T就是那个字典序最小的T
*/
#include<iostream> #include<cstdio> #define max_n 2001 using namespace std; int main() { int N, i, countt = 0; char s[max_n]; cin >> N; for (i = 0; i < N; i++){ cin >> s[i]; } int pre = 0, back = N - 1; while (pre <= back){ bool l = false; for (i = 0; pre + i <= back; i++){ if (s[pre + i] < s[back - i]){ l = true; countt++; break; } else if (s[pre + i]>s[back - i]){ l = false; countt++; break; } } if (l){ putchar(s[pre++]); } else { putchar(s[back--]); } if (countt % 80 == 0){ putchar('\n'); } } putchar('\n'); return 0; }
标签:poj algorithm greedy acm 算法
原文地址:http://blog.csdn.net/hujian_/article/details/44838549