有個序列數組Seq={a,b,c,d,aa,ba,ca,da,ab,bb,cb,db,ac,bc,cc,dc,ad,......aaa,baa,caa,daa,aba,bba,cba,dba.....

來源:互聯網
上載者:User

這是阿里的最新考題,下面的代碼把所需要的字串列印出來。如有其他的問題可以對下面的代碼進行修改,來提供其他功能。

從題中可以看到,字元的增長呈4倍變化。意思就是第一次是四個,第二次是16,依次就是64,128,...........................。從上面的而且有一定的規律性

void Seq_String(){char str[1100][10]; //申請一個二位字元數組memset(str,'\0',sizeof(str));int i=0,j=0,k=0,t=1,m=0,w,q=0,p=0,f;  //t用來儲存一連串字元的長度,m代表行,n代表列char *temp="abcd";for (i=0;i<strlen(temp);i++){str[m++][k]=temp[i];    //先把“abcd”賦給數組,}k++; //k用來表示列數,也就是一行有幾個字元while(1){for (j=0;j<=k;j++){t*=4;    //字元依次隨著4的冪增加,t是用來儲存需要下一次增加字串的個數}w=t;  //w用來暫時儲存t的值f=m;         //f用來暫時儲存當時的行數,for (i=0;i<=k;i++){while (t--)//迴圈次數,第一次是4,第二次是4*4,依次增長4的倍數{    if (i==0)  //在第一個時候分別賦值為,a,b,c,d{   str[m++][i]=temp[q++];    if (q==4)   {q=0;   }    }else{//str[m++][i]=temp[]strcat(str[m++],str[p]); //前複製前t/4,p的個數隨著字串增加4個而加1.所以,有下面的情況if (t%4==0){p++;}}}t=w;  //再次迴圈,m=f;}m=w+f; //迴圈一次後,m是f加上增加的個數。t=1;   //把t變成1,繼續進入下次迴圈if (m>1010){break;}}for (i=0;i<100;i++){printf("%d: %s\n",i,str[i]);}}


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.