博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-3617 Best Cow Line
阅读量:4123 次
发布时间:2019-05-25

本文共 2215 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
using namespace std;const int n_max = 2000 + 5;char cow[n_max];char dir[n_max];int n;int main(){ while(~scanf("%d", & n)) { for(int i = 0; i < n; i ++) { getchar(); scanf("%c", & cow[i]); } int pos1 = 0, pos2 = n - 1, pos = 0; while(pos < n) { if(cow[pos1] < cow[pos2]) //如果 cow 的 头部 小于 尾部,直接加入dir { dir[pos] = cow[pos1]; pos1 ++; } else if(cow[pos2] < cow[pos1]) //如果 cow 的 尾部 小于 头部,直接加入dir { dir[pos] = cow[pos2]; pos2 --; } else if(cow[pos1] == cow[pos2]) //如果 cow 的 头部 等于 尾部,需要进一步的判断 { if(pos1 == pos2) //如果是因为pos1 和 pos2 到达同一位置而相等 则直接弹出 { dir[pos] = cow[pos1]; goto End; } int t1 = pos1, t2 = pos2; int flag = 0; do { t1 ++; t2 --; //不断往里查找 看看是从头部出发 先出现小值 还是 从尾部出发 先出现小值 if(cow[t1] < cow[t2]) { dir[pos] = cow[pos1]; pos1 ++; flag = 1; break; } else if(cow[t2] < cow[t1]) { dir[pos] = cow[pos2]; pos2 --; flag = 1; break; } }while(t1 < t2); if(!flag) //查找内部 发现 头部和尾部 后面的顺序全部相同 则头部 尾部随意取其一(这里取了头部 { dir[pos] = cow[pos1]; pos1 ++; } } pos ++; }End: int cnt = 0; for(int i = 0; i < n; i ++) //输出格式 { printf("%c", dir[i]); cnt ++; if(cnt % 80 == 0 || cnt == n) printf("\n"); } }}

输入n表示字符串长度。之后输入n个字母。

之后可以进行两种操作:
1:删去cow头部,添加在dir尾部。
2 : 删去cow尾部,添加在dir尾部。
问操作后 输出字典序最小的操作结果。

题解:

如上,就是根据过程模拟。

转载地址:http://djtpi.baihongyu.com/

你可能感兴趣的文章
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>