Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- const int N=3;
- int mask[(1<<N)][(1<<N)];
- int get_bit(int num,int n)
- {
- return (num>>n)&1;
- }
- void gen(int i,int start, int cur)
- {
- if(i==N)
- {
- mask[start][cur]++;
- }
- else
- {
- if(get_bit(start,i)==1)
- {
- gen(i+1,start,cur);
- }
- if(get_bit(start,i)==0)
- {
- gen(i+1,start,cur|(1<<i));
- }
- if((i+1<N)&&(get_bit(start,i)==0)&&(get_bit(start,i+1)==0))
- {
- gen(i+2,start,cur);
- }
- }
- }
- void printbin(int n)
- {
- for(int i=N-1;i>=0;i--)
- printf("%d",get_bit(n,i));
- }
- int main()
- {
- for(int i=0;i<(1<<N);i++)
- {
- gen(0,i,0);
- }
- for(int i=0;i<=N;i++)
- putchar(' ');
- for(int i=0;i<(1<<N);i++,putchar(' '))
- printbin(i);
- putchar('\n');
- for(int i=0;i<(1<<N);i++,putchar('\n'))
- {
- printbin(i);
- for(int j=0;j<(1<<N);j++)
- printf(" %3d",mask[i][j]);
- }
- //......
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment