POJ3617 简单字符串
三分之一的通过率的字符串
题意为,输入一个S串,有一个空串T。对S串有两种操作,一是取出S串的头放入T串的尾,二是取出S串的尾放入T串的尾。要求是要使得T串的字典序最小。
从题意来看是一个很明显的贪心思路。那么想到这一步其实比较接近答案了,但是需要注意的一点是当S串的头和尾相同的时候,那么这个时候我们当然也希望取出更小的字符,所以就需要比较下一个字符。但是如果指向头和尾的指针都分别往里前进一位的时候,这俩字符还是相同,咋办?这个情形。。。对,就是回文字符串。形同“ABCDCBA”这样的字符串。这个时候是指针不断地往里走,判断为回文字串的时候,两头任意取下一个即可。还有一种情形是类似于这样的串:“ABCCBA”以及“ABCABA”。这些都需要我们把指针不断地移动到中间的时候才能够判断出应该先取哪边的字串才能保证T串的字典序最小。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int maxn = +;
char s[maxn]; void solve(int n)
{
int i,l,r,cnt;
l = ;
r = n-;
for(cnt=; l<=r; cnt++)
{
bool left = false;
for(i=; l+i<=r; i++)
{
if(s[l+i] < s[r-i])
{
left = true;
break;
}
else if(s[l+i] > s[r-i])
{
left = false;
break;
}
if((l+i == r-i) && s[l+i] == s[r-i])
{
left = true;
break;
}
if((l+i+ == r-i) && s[l+i] == s[r-i])
{
left = true;
break;
}
}
//if(top == n-1) left = true;
if(left) putchar(s[l++]);
else putchar(s[r--]);
if(n % != )
if(cnt % == )
printf("\n");
}
} int main()
{
int n,i;
while(scanf("%d%*c",&n) == )
{
char x;
memset(s,,sizeof(s));
for(i=; i<n; i++)
{
scanf("%c%*c",&x);
s[i] = x;
}
s[i] = '\0';
solve(n);
}
return ;
}
POJ3617 简单字符串的更多相关文章
- CF 208A Dubstep(简单字符串处理)
题目链接: 传送门 Dubstep Time Limit: 1000MS Memory Limit: 32768 KB Description Vasya works as a DJ in t ...
- 第一部分之简单字符串SDS(第二章)
一,什么是SDS? 1.引出SDSC字符串:c语言中,用空字符结尾的字符数组表示字符串简单动态字符串(SDS):Redis中,用SDS来表示字符串.在Redis中,包含字符串值的键值对在底层都是由SD ...
- hdu 5059 简单字符串处理
http://acm.hdu.edu.cn/showproblem.php?pid=5059 确定输入的数是否在(a,b)内 简单字符串处理 #include <cstdio> #incl ...
- C 封装一个通用链表 和 一个简单字符串开发库
引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是 ...
- 1442: Neo 的简单字符串(字符串)
1442: Neo 的简单字符串 时间限制: 10 Sec 内存限制: 128 MB 提交: 9 解决: 3 统计 题目描述 Neo 给你一系列字符串,请你输出字符串中的不同单词个数以及总单词个数. ...
- Java实验--关于简单字符串回文的递归判断实验
首先题目要求写的是递归的实验,一开始没注意要求,写了非递归的方法.浪费了一些时间,所谓吃一堑长一智.我学习到了以后看实验的时候要认真看实验中的要求,防止再看错. 以下是对此次的实验进行的分析: 1)递 ...
- python 简单字符串字典加密
1 def crypt(source,key): from itertools import cycle result='' temp=cycle(key) for ch in source: res ...
- 洛谷 简单字符串 'P1055ISBN号码' 问题
题目描述如下: 知识点①:char数组与int型数字进行运算时,需要将 char[i]-'0' .比如 char c[5]; int i; for(i=0;i<5;i++) scanf(&quo ...
- c# 进程间的通信实现之一简单字符串收发
使用Windows API实现两个进程间(含窗体)的通信在Windows下的两个进程之间通信通常有多种实现方式,在.NET中,有如命名管道.消息队列.共享内存等实现方式,这篇文章要讲的是使用Wi ...
随机推荐
- wordpress 404 error on all pages!
You have to enable mod_rewrite in apache itself or you won't be able to have permalinks the way you ...
- 《A First Course in Probability》-chape6-随机变量的联合分布-基本概念
之前我们探讨了一元随机变量的分布列,下面我们应该将相应的性质推广到多元随机变量的分布列,在这里我们主要以讨论二元随机变量分布列为主. 利用类比的方法,我们很容易将一元随机变量的分布列的性质推广上来. ...
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
- 301重定向与CNAME
CNAME记录是域名指向另一个域名A记录是域名指向IP地址URL跳转是打开这个网址的时候会跳转到另一个指定的网址,URL跳转分为301永久重定向和302临时重定向. 301永久重定向会使搜索引擎抓取新 ...
- hdu4549之矩阵快速幂
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Su ...
- javaweb项目的优化 - 几番思念
简单地来看一个浏览器用户访问的流程: 浏览器->服务器->返回结果显示 这么简单地看,可能想得到的优化手段很少,常见的可能就是优化sql,加快数据库处理:加个缓存,加快返回:使用静态文件 ...
- css分割线 文字居中的7种实现方式
最近开始研究前端,会不定期更新一些小块代码,写下自己的学习笔记,也希望能和大家一起进步! 1.单个标签实现分隔线: <html> <head lang="en"& ...
- SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=2866&rd=5853 主要是要对字符串的操作要熟悉,熟 ...
- cocos2dx内存管理的一些看法
今年年初进入一家游戏公司,正式开始游戏引擎的学习,之前的ios学习,对现在的游戏引擎学习还是有很大的帮助的,虽然使用c++,但却能时刻感受到ios框架对于cocos2dx的巨大影响. 由于之前一直使用 ...
- Oracle内存结构(之三)
[深入解析--eygle] 学习笔记 1.2.3 PGA的管理: sys@felix SQL>show parameter area_size NAME TYPE VALUE --------- ...