Codeforces Problem 708A Letters Cyclic Shift
题目链接:
http://codeforces.com/problemset/problem/708/A
题目大意:
从字符串s中挑选出一个子串(非空),将该子串中的每个字母均替换成前一个字母,如'b'换成'a','c'换成'b',以此类推,特别的,'a'要换成'z',问经过一次转换之后,字典序最小的字符串s为多少.注意“exactly one non-empty substring”这就意味着全'a'串也要变,即字符串"aaa",替换其中的字母(会使得字典序比原来大),但又要使字典序最小,所以只能将最后一个'a'->'z'==》字串变为“aaz”
解题思路:
代码可以解释解题思路
#include<bits/stdc++.h>
using namespace std;
char ca[];
int main()
{
int i,k;
while(~scanf("%s",ca))
{
k=;
for(i=; ca[i]!='\0'; i++)
if(ca[i]!='a')break;
for(; ca[i]!='\0'; i++)
{
if(ca[i]=='a')break;
ca[i]--;
k=;
}
if(!k)ca[strlen(ca)-]='z';
puts(ca);
}
return ;
}
第一次 for 如果 s[i]!=a 则break,如果 s[i]==a 则不对原数组改变,向后扫描(有一个k作为标识)
第二次for 一直扫描到尾,如果 !=a 则让该字符 s[i]-- ,同时作为标识的 k++,如果==a 则说明 a之前的数据已经处理完毕,已处理完“字串”,break,即可
判断标识,输出结果
举三个例子:
1.
输入:codeforces 输出:bncdenqbdr
k=0;i=0;
第一次 for
s[0] != a; break;
第二次 for
---一直没有等于a 的则将每个数都s[i]--;k++
if(!k)-- //k为非0 不执行 if 语句
输出 s即可
2.
输入:abacaba 输出:aaacaba
k=0;i=0;
第一次 for s[0]=='a'; s[0]不变
s[1]!=a; i=1;break;
第二次 for i=1
s[1]!=a; s[1]--;k++; //s[1]-- 其值原为 'b' 减减为 ‘a’
s[2]==a;break;//字串已处理结束,字串为“b”一个字符
if(!k)-- //k为非0 不执行 if 语句
输出 aaacaba
3.
输入:aaaa 输出:aaaz
k=0;i=0
第一次 for s[0]=='a'; s[0]不变
s[1]==‘a’; s[1] 不变
...
s[4]=='\0' 跳出循环
第二次 for i=4 ;s[4]!='\0';//循环失效,不执行循环体
if(!k)-- //k为0 执行 if 语句 s[sizof(s)-1]='z';//sizeof(s)=4,s[3]='z';
输出 aaaz;
Codeforces Problem 708A Letters Cyclic Shift的更多相关文章
- Codeforces 708A Letters Cyclic Shift
A. Letters Cyclic Shift time limit per test:1 second memory limit per test:256 megabytes input:stand ...
- codeforces 709C C. Letters Cyclic Shift(贪心)
题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- AIM Tech Round 3 (Div. 1) A. Letters Cyclic Shift 贪心
A. Letters Cyclic Shift 题目连接: http://www.codeforces.com/contest/708/problem/A Description You are gi ...
- CodeForces 709C Letters Cyclic Shift (水题)
题意:给定一个字符串,让你把它的一个子串字符都减1,使得总字符串字典序最小. 析:由于这个题是必须要有一个字串,所以你就要注意这个只有一个字符a的情况,其他的就从开始减 1,如果碰到a了就不减了,如果 ...
- CodeForces 709C Letters Cyclic Shift
贪心. 肯定是两个$a$之间的那些字符都$-1$,没有$a$就全部$-1$.如果输入的串全是$a$,那么把最后一个$a$改成$z$. #pragma comment(linker, "/ST ...
- CF708A Letters Cyclic Shift 模拟
You are given a non-empty string s consisting of lowercase English letters. You have to pick exactly ...
- Codeforces Round #385 (Div. 2) A. Hongcow Learns the Cyclic Shift 水题
A. Hongcow Learns the Cyclic Shift 题目连接: http://codeforces.com/contest/745/problem/A Description Hon ...
- Largest Smallest Cyclic Shift
Largest Smallest Cyclic Shift 题目来源: Atcoder Code Festival 2017 Qual B Problem F 题目大意: 有\(X\)个字符'a',\ ...
随机推荐
- SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法
步骤 1.继承AbstractJUnit4SpringContextTests 2.引入ApplicationContext 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 【CodeVS 3160】最长公共子串
http://codevs.cn/problem/3160/ 看了好久的后缀自动机_(:з」∠)_ 对A串建立SAM,用B串去匹配A串SAM,如果在当前节点走不下去,就跳到当前节点的parent(类似 ...
- 【BZOJ 1857】【SCOI 2010】传送带
三分套三分,虽然简单,但是也得掌握,,, 时间复杂度$O(log_{1.5}^2 n)$ 一开始WA好几次发现是快速读入里没有return,这样也能过样例?_(:3J∠)_ #include<c ...
- 510C
510C 拓扑排序:将那些受影响的字母拓扑排序,其后的输出 #include<iostream> #include<cstdio> #include<vector> ...
- 16 IO操作文件读写
IO的分类 第一种分法: 1.输入流 2.输出流 第二种分法: 1.字节流 2.字符流 第三种分法: 1.节点流 2.处理流 I/O当中的核心类: InputStream <--------F ...
- Visual Studio Code 添加设置代码段(snippet)
从VSCode发布以来就在关注,最近已经更新到版本0.10.8,已经支持了插件功能.日常使用编辑器已经由Sublime Text迁移到了VSCode.使用中遇到了这个问题,在网上也没搜到解决方案.记录 ...
- bzoj2821: 作诗(Poetize)
分块 分sqrt(n)块 F[i][j]表示块i到块j的答案 s[i][j]表示数字i在前j块内出现了几次 #include <iostream> #include <cstdio& ...
- BZOJ 1112: [POI2008]砖块Klo
1112: [POI2008]砖块Klo Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1736 Solved: 606[Submit][Statu ...
- 【BZOJ-1010】玩具装箱toy DP + 斜率优化
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8432 Solved: 3338[Submit][St ...
- Slave2: no datanode to stop(HADOOP_PID_DIR)
HADOOP_PID_DIR 本想在环境变量里设置,在相关文件里直接尹用,但是我想起来那时候的JAVA_HOME都不行,还是一个一个设置吧. 有时候,我们对运行几天或者几个月的hadoop或者hbas ...