zoukankan      html  css  js  c++  java
  • 讨厌字符串

     #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;
    }
  • 相关阅读:
    建立适当的索引
    Windows 10Bash命令
    代码生成工具介绍和使用
    分布式的任务调度框架
    Net分布式系统
    Keepalived+LVS+Nginx负载均衡之高可用
    call,apply,bind
    2015搜狐在线笔试题(内存泄露问题)(转)
    十步完全理解SQL(转)
    Linux shell用法和技巧(转)
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10283189.html
Copyright © 2011-2022 走看看