10 void remove_overlap(int n,int m, ...)

 11 {

 12 int i,j,k,l,x,y;

 13 static int cnt = 0;

 14 int **p;

 15 int *a,*b;

 16 a = (int *)(malloc(sizeof(int)*m));

 17 b = (int *)(malloc(sizeof(int)*n));

 18

 19

 20         for (i=0;i<m;++i)

 21         b[i]= 0;

 22

 23 va_list(list);

 24 va_start(list,m);

 25         p=va_arg(list,int**);

 26         for(i=1;i<n;++i)   /* p[i]와 p[i]보다 작은 p[k]를 비교하여 같은 원소를 가지는지 여부 판단*/

 27                 for(k=0;k<i;++k)

 28                 {       for(y=0; y<m;++y)

 29                         a[y]=-1;

 30

 31                         for(j=0,cnt=0;j<m;++j)

 32                         {

 33                                 for (l=0;l<m;++l)

 34                                         {

 35                                         for(x=0;x<m;++x)

 36                                                 if (a[x]==l)

 37                                                         {x=-1;

 38                                                         break;}

 39                                         if (x==-1)

 40                                                 continue;

 41

 42                                         if (p[i][j]==p[k][l])

 43                                                 {

 44                                                 ++cnt;

 45                                                 a[l]=l;

 46                                                 break;

 47

 48                                                 }

 49                                         }

 50

 51                         }

 52

 53                         if (cnt==m)

 54                         {b[i]=1; break;}

 55                 }

 56

 57         for(i=0; i<n; ++i)

 58                 {

 59                 k=0;

 60                 while(!p[i][k])

 61                         {

 62                         ++k;
 63                         if (k==m)
 64                                 {b[i]=1; break;}
 65                         }
 66                 }
 67
 68         for(i=0,j=0,l=0;i<n;++i)
 69
 70
 71                         if (b[i]==0)
 72                                 {
 73                                 for(k=0;k<m;++k)
 74                                 p[0+j][k]=p[i][k];
 75                                 ++j;
 76                                 }
 77
 78         for(i=0,j=0,l=0;i<n;++i)
 79
 80                          if (b[i]!=0)
 81                                 {
 82                                 for(j=0;j<m;++j)
 83                                 p[n-1-l][j]=0;
 84                                 ++l;
 85                                 }
 86
 87
 88
 89
 90
 91         va_end(list);
 92
 93 }