Codeforces Round #265 (Div. 2)-C. No to Palindromes!
来源:互联网 发布:js定时器怎么用 编辑:程序博客网 时间:2024/06/06 00:38
原题链接
Paul hates palindromes. He assumes that string s is tolerable if each its character is one of the first p letters of the English alphabet and s doesn't contain any palindrome contiguous substring of length 2 or more.
Paul has found a tolerable string s of length n. Help him find the lexicographically next tolerable string of the same length or else state that such string does not exist.
The first line contains two space-separated integers: n and p (1 ≤ n ≤ 1000; 1 ≤ p ≤ 26). The second line contains string s, consisting of n small English letters. It is guaranteed that the string is tolerable (according to the above definition).
If the lexicographically next tolerable string of the same length exists, print it. Otherwise, print "NO" (without the quotes).
3 3cba
NO
3 4cba
cbd
4 4abcd
abda
对于每个字符若str[i] != str[i-1] && str[i] != str[i-2]则必定不会出存在回文串.从尾到头遍历字符串str,对于str[i], 若存在字符变量p使得p > str[i] && p != str[i-1] && p != str[i-2]则str[i] = p, 从j = i + 1开始找到最小的字符,为str[j]赋值满足不为回文串的条件
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <map>#include <vector>#include <queue>#define maxn 1005#define MOD 1000000007#define INF 1e9using namespace std;typedef long long ll;char str[maxn];int main(){//freopen("in.txt", "r", stdin);int n, p;scanf("%d%d", &n, &p);scanf("%s", str);int sign = -1;for(int i = n-1; i >= 0; i--){ for(int j = str[i] + 1; j < p + 'a'; j++){ if(i && j == str[i-1]) continue; if(i > 1 && j == str[i-2]) continue; str[i] = j; sign = i; break; } if(sign != -1) break;}if(sign == -1){puts("NO");return 0;}for(int i = sign+1; i < n; i++){for(int j = 'a'; j < p + 'a'; j++){if(i && j == str[i-1]) continue;if(i > 1 && j == str[i-2]) continue;str[i] = j;break;}}puts(str);return 0;}
- Codeforces Round #265 (Div. 2) C.No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C - No to Palindromes!
- Codeforces Round #265 (Div. 2)-C. No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes!(字符串+构造??)
- Codeforces Round #265 (Div. 1) A No to Palindromes!
- Codeforces Round #265 (Div. 2) C. No to Palindromes! 构造不含回文子串的串
- Codeforces Round #265(div2) C. No to Palindromes!
- 【CODEFORCES】 C. No to Palindromes!
- C. Primes or Palindromes?-Codeforces Round #315 (Div. 2)
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes?
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes? 素数表 回文数
- Codeforces Round #315 (Div. 2)569C Primes or Palindromes?(预处理)
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes? (素数打表 回文数)
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes? (打表枚举)
- Codeforces Round #315 (Div. 2)——C. Primes or Palindromes?
- Codeforces Round #315 (Div. 2) C - Primes or Palindromes?(暴力打表)
- 图形界面编程(五) 布局容器类(2)
- 如何监听ScrollView滑到底部
- 关于Java泛型的面试题
- 多态性实现机制——静态分派与动态分派
- 文件存储
- Codeforces Round #265 (Div. 2)-C. No to Palindromes!
- 个人总结javaWeb以及SSH等相关面试题
- opencv中step[i],step1(i),elemsize,elemsize1
- Neural Networks and Deep Learning CH4
- ios开发者如何获取iOS应用中所有图片资源
- ARM 构建交叉编译工具链
- 类初始化
- 图形界面编程(五) 布局容器类(3)
- poj2104[划分树问题]