• HDU4850 构造一个长度n串,它需要随机长度4子是不相同


    n《=50W。(使用26快报)

    构造函数:26一个。截至构建26^4不同的字符串,最长的长度26^4+3。如此之大的输出“impossble”,被判重量的四维阵列。

    在正向结构的时间(开始一个字符开始后),此,可以构造出26^4-25种子,(bbbb~zzzz),构造不出来,于是,学习了他人方法,把这些放在最前面,再反复上述方法构造就可以(以后都能够用这样的向前推一法构造)。

    PS:从中额外学得:若用string 的s=s+char,拼接,速度非常慢。用char s[],然后s[size++]=char,快得多。输出有点意思。直接输出n个就可以,末地址起。

    #include<iostream>  //46MS
    #include<string>
    #include<cstdio>
    using namespace std;
    int mark[26][26][26][26];
    char s[480000];
    int size=0;
    int main()
    {
        int n;
         for(int i=0;i<26;i++)
        {
                    s[size++]=char(i+'a');
                    s[size++]=char(i+'a');
                    s[size++]=char(i+'a');
                    s[size++]=char(i+'a');
        }
        for(int i=0;i<size-3;i++)
            mark[s[i]-'a'][s[i+1]-'a'][s[i+2]-'a'][s[i+3]-'a']=1;
        int t1=25,t2=25,t3=25;
                for(int i=104;i<=456979;i++)
                {
                    int count1=0;
                    for(int j=t3+1;count1<2;j++)
                    {
                         if(j==26)
                        {
                            j=0;
                            count1++;
                        }
                        if(mark[t1][t2][t3][j]==0)
                        {
                            mark[t1][t2][t3][j]=1;
                            char temp=j+'a';
                            s[size++]=temp;
                            t1=t2;t2=t3;t3=j;
                            break;
                        }
                    }
                }
        /*   for(int i=0;i<26;i++)
             for(int j=0;j<26;j++)
               for(int k=0;k<26;k++)
                 for(int t=0;t<26;t++)
                   if(mark[i][j][k][t]==0)
                      printf("%d%d%d%d
    ",i,j,k,t);*/
        while(cin>>n)
        {
            if(n>26*26*26*26+3)
            {
                cout<<"Impossible"<<endl;
                continue;
            }
            else
            {
                  printf("%s
    ",s+456979-n);//输出n个字符!后面的是起始地址。 
            }
        }
        return 0;
    }
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    MVC实现类似QQ的网页聊天功能-ajax(下)
    SQLServer中跨库复制数据
    MVC实现类似QQ的网页聊天功能-Ajax(上)
    好看的Select下拉框是如何制造的
    Vss服务端用户存在,但客户端登陆不进去
    Jquery-uploadify多文件上传插件使用介绍
    jQuery mouseover,mouseout事件多次执行的问题处理
    解决svn状态图标不显示的办法
    ASP.NET获取用户端的真实IP
    js中时间戳与日期转换-js日期操作
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4737444.html
Copyright © 2020-2023  润新知