zoukankan      html  css  js  c++  java
  • codeforce No to Palindromes!(枚举)

     1 /*
     2      题意:给定一个字符串中没有任何长度>1的回文子串!求按照字典序的该串的下一个字符串
     3      也不包含长度>1的任何回文子串!
     4      
     5      思路:从最低位进行枚举,保证第i位 不与 第 i-1位和第 i-2位相同就好了!那么因为前边i-1
     6      位没有长度>1的回文子串,那么前i位也不会出现!最后将最后边的字符按照相同的原则补齐就好了! 
     7 */
     8 #include<iostream>
     9 #include<cstdio>
    10 #include<cstring>
    11 #include<algorithm>
    12 
    13 using namespace std;
    14 
    15 
    16 char ch[1005];
    17 
    18 int main(){
    19     int n, p;
    20     while(scanf("%d%d", &n,  &p)!=EOF){
    21         ch[0]='0';
    22         ch[1]='0';
    23         int up='a'+p-1;
    24         scanf("%s", ch+2);//从字符串第二位输入是因为第一位,第二位也要枚举 
    25         bool flag=false;
    26         for(int i=++n; i>=2 && !flag; --i){//枚举每一位 
    27             for(int j=ch[i]+1; j<=up && !flag; ++j){//每一位应该出现的字符(从小到大) 
    28                 ch[i]=j;
    29                 if(ch[i]!=ch[i-1] && ch[i]!=ch[i-2]){//保证三者互不相同 
    30                     flag=true;
    31                     for(int k=i+1; k<=n; ++k){//补全后面 
    32                         int cc;
    33                         for(cc='a'; cc<=up; ++cc)
    34                             if(cc!=ch[k-1] && cc!=ch[k-2]) break;
    35                         ch[k]=cc;
    36                     }
    37                 }
    38             }
    39         } 
    40         if(flag) printf("%s
    ", ch+2);
    41         else printf("NO
    ");
    42     }
    43     return 0;
    44 } 
  • 相关阅读:
    第七周上机
    第六周作业
    第六周上机作业
    第五周上机作业
    java第四周作业
    上机作业
    第三次java作业
    java作业
    第七周作业
    JAVA第七周上机作业
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3964726.html
Copyright © 2011-2022 走看看