码迷,mamicode.com
首页 > 其他好文 > 详细

POJ3617-Best Cow Line

时间:2014-09-30 20:28:10      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   sp   div   

给定长度为N的字符串S,构造长度为N的字符串T,起初T是空串,反复从S的头部或者尾部删除一个字符,加到T的尾部。目标是构造字典序尽可能小的T。尝试如下贪心算法:

  • 不断取S头部和尾部较小的字符放到T的尾部。

考虑S头部和尾部字符相同的情况。有如下算法:

  • 按照字典序比较S和将S反转后的字符串S‘;
  • 如果S较小,从S的头部取出一个字符添加到T尾部;
  • 如果S‘较小,从S’的头部(即S的尾部)取出一个字符添加到T的尾部。
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int N;
 6 char S[2100];
 7 
 8 void solve()
 9 {
10     int left = 0, right = N-1;
11     bool left_flag = false;
12 
13     while (left <= right)
14     {
15         for (int i = 0; left+i <= right; i++)
16         {
17             if (S[left+i] < S[right-i])
18             {
19                 left_flag = true;
20                 break;
21             }
22             else if (S[left+i] > S[right-i])
23             {
24                 left_flag = false;
25                 break;
26             }
27         }
28         if (left_flag) putchar(S[left++]);
29         else putchar(S[right--]);
30     }
31     putchar(\n);
32 }
33 
34 int main()
35 {
36     cin >> N;
37     for (int i = 0; i < N; i++)
38         cin >> S[i];
39 
40     solve();
41 
42     return 0;
43 }

 

POJ3617-Best Cow Line

标签:style   blog   color   io   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/bournet/p/4002350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!