knightL

Generate Matrix

Jun 21st, 2011
948
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <stdio.h>
  2. const int N=3;
  3. int mask[(1<<N)][(1<<N)];
  4.  
  5. int get_bit(int num,int n)
  6. {
  7.         return (num>>n)&1;
  8. }
  9.  
  10. void gen(int i,int start, int cur)
  11. {
  12.         if(i==N)
  13.         {
  14.                 mask[start][cur]++;
  15.         }
  16.         else
  17.         {
  18.                 if(get_bit(start,i)==1)
  19.                 {
  20.                         gen(i+1,start,cur);
  21.                 }
  22.                 if(get_bit(start,i)==0)
  23.                 {
  24.                         gen(i+1,start,cur|(1<<i));
  25.                 }
  26.                 if((i+1<N)&&(get_bit(start,i)==0)&&(get_bit(start,i+1)==0))
  27.                 {
  28.                         gen(i+2,start,cur);
  29.                 }
  30.         }
  31. }
  32.  
  33. void printbin(int n)
  34. {
  35.         for(int i=N-1;i>=0;i--)
  36.                 printf("%d",get_bit(n,i));
  37. }
  38.  
  39. int main()
  40. {
  41.         for(int i=0;i<(1<<N);i++)
  42.         {
  43.                 gen(0,i,0);
  44.         }
  45.         for(int i=0;i<=N;i++)
  46.                 putchar(' ');
  47.         for(int i=0;i<(1<<N);i++,putchar(' '))
  48.                 printbin(i);
  49.         putchar('\n');
  50.         for(int i=0;i<(1<<N);i++,putchar('\n'))
  51.         {
  52.                 printbin(i);
  53.                 for(int j=0;j<(1<<N);j++)
  54.                         printf(" %3d",mask[i][j]);
  55.         }
  56. //......
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment