给定长度为N的字符串S,要构造一个长度为N的字符串T,起初,T是一个空串,随后反复进行下列任意操作。

*从S的头部删除一个字符,加到T的尾部

*从S的尾部删除一个字符,加到T的尾部

目标是要构造字典序尽可能小的字符串T

模拟情景,想出来一个有意思的比喻,写出来程序,俩个推土机开始在互相看不到对方的直线工作推物品,每个人每次走一步,并且先将物品重量较小的先推走, 由于没有手机,只能通过副驾驶通信员互相沟通,谁的前方物品较轻先推走,于是通信员下车检查,物品,当A,B通信员发现一方较轻时,就全部回各自的车报告向前走一步或者不走。但是通信员发现前方各自的第一个物品重量相同,就各自继续向前走一步直到发现重量较轻的返回各自的车内,报告走一步后者是不走。当通信员发现前方各自的重量都是一样的就对对方说,我们谁先走都行。互相谦让,选出一个通信员,回到车内,向前走一步。 直到推掉所有的物品,俩个车相见完成任务。

#include<stdio.h>
const int MAX=;
int N;
char S[MAX+];
void f(){
int a=,b=N-;
int left;
while(a<=b){//当俩个推土机还没有遇见的时候
for(int i=;a+i<=b;i++){ //A/B通信员下车报告
if(S[a+i]<S[b-i]){ //A通信员发现前方物品重量较小
left=; break;
}else if(S[a+i]>S[b-i]){ //B通信员发现前方物品较小
left=; break;
}
}
if(left) printf("%c",S[a++]); //推土机向前开始工作
else printf("%c",S[b--]);
}
}
int main(){
while(scanf("%d",&N)){
//一定注意接收上一个字符
getchar();
for(int i=;i<N;i++){
scanf("%c",&S[i]);
}
f();
}
return ;
}

Best Cow Line (POJ 3217)的更多相关文章

  1. POJ 3617 Best Cow Line ||POJ 3069 Saruman's Army贪心

    带来两题贪心算法的题. 1.给定长度为N的字符串S,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下面两个操作:1.从S的头部删除一个字符,加到T的尾部.2.从S的尾部删除一个字符,加 ...

  2. Best Cow Line(POJ No.3617)

    问题: 链接:http://poj.org/problem?id=3617 思路: 按照字典序比较S和将S反转后的字符串S' 如果S较小,就从S的开头取出一个字符,加到T的末尾(更新下标值) 如果S’ ...

  3. Best Cow Line (POJ 3617)

    题目: 给定长度为N的字符串S,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下列任意操作. ·从S的头部删除一个字符,加到T的尾部 ·从S的尾部删除一个字符,加到T的尾部 目标是要构 ...

  4. POJ 3617 Best Cow Line(最佳奶牛队伍)

    POJ 3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] FJ is about to t ...

  5. Best Cow Line <挑战程序设计竞赛> 习题 poj 3617

    P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Goldpoj 3617 http://poj.org/problem?id=3617 题目描述FJ is about ...

  6. POJ 3617 Best Cow Line (贪心)

    Best Cow Line   Time Limit: 1000MS      Memory Limit: 65536K Total Submissions: 16104    Accepted: 4 ...

  7. POJ 3617:Best Cow Line(贪心,字典序)

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30684   Accepted: 8185 De ...

  8. poj 3617 Best Cow Line (字符串反转贪心算法)

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9284   Accepted: 2826 Des ...

  9. POJ 3617 Best Cow Line 贪心算法

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26670   Accepted: 7226 De ...

随机推荐

  1. list 操作

    animals = ["aardvark", "badger", "duck", "emu", "fennec ...

  2. CPU使用率统计办法

    我们在搞性能测试的时候,对后台服务器的CPU利用率监控是一个常用的手段.服务器的CPU利用率高,则表明服务器很繁忙.如果前台响应时间越来越大,而后台CPU利用率始终上不去,说明在某个地方有瓶颈了,系统 ...

  3. C# - List操作- 去掉重复

    ChangeList里面会有重复的数据,这时可以这样去掉重复的item // Remove duplicated info var dup = ChangeList.Where(item => ...

  4. (转)iOS7界面设计规范(9) - UI基础 - 动画

    傍晚下了场大雨,现在坐在屋里也真是很风凉,听着Everlong突然觉得好像去年秋天的气息.每个季节都有各自的气息,每一年也是,如果你留意,便会感觉到.话说这几天,外面的猫猫狗狗们可以补些水来喝了,这也 ...

  5. hdu1047(模拟大量的循环添加)

    标题信息:总结多个大整数,(使用add循环相加的功能) http://acm.hdu.edu.cn/showproblem.php? pid=1047 AC代码: /**  *大数的循环加法,转化为字 ...

  6. 如何把java代码转换成smali代码

    1.概述 Smali是Android系统中Dalvik虚拟机指令语言,在apk逆向过程中有许多工具可以把smali代码转化成java代码.但是在学习Smali语法的过程中,有时候需要进行java代码和 ...

  7. (转)用来理解Java的8个图表

    很多时候,一张图比你说 1000 个字能更有效的说清楚一个问题.我们列举了 8 个关于 Java 语言的图表,或许可以让你对 Java 有着更深入的认识. 1.字符串不变性(String Immuta ...

  8. PL/SQL中字符串变量的分割转化

    在编写PL/SQL时,有时候我们需要处理这样一个输入的变量,它的格式是由多个值通过分隔符组成的字符串,如“1,2,3”,我们需要将这个变量加入到我们的SQL中,形成诸如in('1','2','3')的 ...

  9. C#创建Windows服务的几个注意事项

    1.服务安装后的自动启动:服务的StartType即使配置成Automatic,在首次安装成功之后还是要在服务列表中找到并手工启动.此外,可以通过在ProjectInstaller中添加AfterIn ...

  10. 解决Hibernate中不同包内有形同实体导致映射失败的问题

    报错代码如下: Caused by: org.hibernate.DuplicateMappingException: duplicate import: Engin refers to both t ...