现在的位置: 首页 > 综合 > 正文

网易面试题

2012年02月08日 ⁄ 综合 ⁄ 共 932字 ⁄ 字号 评论关闭

 写一个程序,打印出以下的序列。
(a),(b),(c),(d),(e)........(z)
(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)
(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)
....

(a,b,c,d,.....x,y,z)

 

 

  1. const char arr[]="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";  
  2. char tmp[sizeof(arr)];  
  3. for(int i = 0; i < 26; i++)  
  4. {  
  5.     memset(tmp,0,sizeof(arr));  
  6.     strncpy(tmp,arr,i*2+1);  
  7.     for(;;)  
  8.     {  
  9.         for(;tmp[i*2]<'z';)  
  10.         {  
  11.             printf("(%s),",tmp);  
  12.             tmp[i*2]++;  
  13.         }  
  14.         printf("(%s)",tmp); // 最后一个,不需要逗号 
      
  15.         //printf("\n");
      
  16.   
  17.         if(0 == strncmp(tmp,arr+25*2-i*2,i*2+1))  
  18.             break;  
  19.   
  20.         int j = 0;  
  21.         for(;j <= i;j++)  
  22.         {  
  23.             if(tmp[j*2] == arr[25*2-i*2+j*2])  
  24.                 break;  
  25.         }  
  26.         tmp[(j-1)*2]++;  
  27.         for(;j<=i;j++)  
  28.         {  
  29.             tmp[j*2] = tmp[(j-1)*2]+1;  
  30.         }  
  31.     }  
  32.     printf("\n");  
  33. }  

 

【上篇】
【下篇】

抱歉!评论已关闭.