Advertisement
Guest User

Interleave

a guest
Oct 20th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3.  
  4. const int maxsize = 1000;
  5. int *interleave(int a[], int lena, int b[], int lenb)
  6. {
  7.     int *re;
  8.     int temp_size = abs(lena-lenb);
  9.     int ti=0;
  10.     if(temp_size>0)
  11.     {
  12.         if(lena>lenb)
  13.             re = interleave(a,lenb-1,b,lenb-1);
  14.         else
  15.             re = interleave(a,lena-1,b,lena-1);
  16.         int s;
  17.         if(lena>lenb)
  18.         {
  19.             s = lenb;
  20.             ti = lenb*2;
  21.             while(s<lena)
  22.             {
  23.                 re[ti] = a[s];
  24.                 ti++;
  25.                 s++;
  26.             }
  27.         }
  28.         else
  29.         {
  30.             s = lena;
  31.             ti = lena*2;
  32.             while(s<lenb)
  33.             {
  34.                 re[ti] = b[s];
  35.                 ti++;
  36.                 s++;
  37.             }
  38.         }
  39.         return re;
  40.     }
  41.     if(lena==0 and lenb==0)
  42.         re = (int*)malloc( maxsize );
  43.     else
  44.         re = interleave(a,lena-1,b,lenb-1);
  45.     re[lena*2] = a[lena];
  46.     re[lenb*2+1] = b[lenb];
  47.     return re;
  48. }
  49.  
  50. int main()
  51. {
  52.     int la,lb,a[maxsize],b[maxsize];
  53.  
  54.     scanf("%d",&la);
  55.     for(int i=0;i<la;i++)
  56.         scanf("%d",&a[i]);
  57.  
  58.     scanf("%d",&lb);
  59.     for(int i=0;i<lb;i++)
  60.         scanf("%d",&b[i]);
  61.  
  62.     printf("Interleave\n");
  63.     int *result = interleave(a,la,b,lb);
  64.     int max = la+lb;
  65.     for(int i=0;i<max;i++)
  66.         printf("%d ",result[i]);
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement