• 讨厌字符串


     #include<iostream>
    #include<cstring>
    #include<string>
    using namespace std;
    struct node{
        int v[26],p;
        void init(){memset(v,0,sizeof(v));p=0;}
    }t[1001000];
    char str[15],mm[15];
    int cnt;
    void update(int &rt,int k,int c){
        if(rt==0)rt=(++cnt),t[rt].init();
        if(t[rt].p+1==c)t[rt].p++;
        if(mm[k]==''){return;}
        update(t[rt].v[mm[k]-'a'],k+1,c);
    }
    int query(int rt,int k){
        if(str[k]=='')return t[rt].p;
        if(rt==0)return 0;
        return query(t[rt].v[str[k]-'a'],k+1);
    }
    char cm[15];
    char ans[15],lens;
    void dfs(int rt,int n,int bit){
    int flag=0;
    for(int i=0;i<26;i++){
    if(t[rt].v[i]!=0&&t[t[rt].v[i]].p==n){
    cm[bit]='a'+i;
    dfs(t[rt].v[i],n,bit+1);
    flag=1;
    }
    }
    if(!flag){
    cm[bit]='';
    if(bit>lens){
    lens=bit;
    memcpy(ans,cm,sizeof(ans));
    }
    //printf("%s
    ",cm);
    }
    }
    int main()
    {
    int N,top;
    while(~scanf("%d",&N)){
    top=cnt=0;
    for(int i=1;i<=N;i++){
    scanf("%s",str);
    int len=strlen(str);
    int c=1<<len;
    for(int w=0;w<len;w++){
    for(int j=1;j<c;j++)
    {
       int k=0;
       for(int v=0;v<len;v++)
        if((1<<v)&j){
        mm[k++]=str[v];
    }
    mm[k]='';
    update(top,0,i);
    }
    str[len]=str[0];
    for(int j=0;j<len;j++)str[j]=str[j+1];
    }
    }
    lens=0;
    dfs(top,N,0);
    if(lens==0)puts("0");
    else printf("%s
    ",ans);
    }
    return 0;
    }
  • 相关阅读:
    Java线程池之ThreadPoolExecutor
    React Native开发环境的搭建
    Android Lint——内嵌于Android Studio的代码优化工具
    Android异步处理技术
    NavigationView的头部的事件监听
    进程间通信之AIDL
    跨进程通信之Messenger
    Android 进程增加存活率
    android MVP模式思考
    Vim学习
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10283189.html
Copyright © 2020-2023  润新知