程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU4850 構造一個長度為n的串,要求任意長度為4的子串不相同

HDU4850 構造一個長度為n的串,要求任意長度為4的子串不相同

編輯:C++入門知識

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  //46MS
#include
#include
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>n)
    {
        if(n>26*26*26*26+3)
        {
            cout<<"Impossible"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved