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"<