bzoj 3033 太鼓达人

时间:2023-03-09 05:51:20
bzoj 3033 太鼓达人

思路:首先一定是2^m次方的总数。用二进制从 000 一直到 111总过m个数,然后暴搜。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<stack>
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define clc(a,b) memset(a,b,sizeof(a))
const int maxn = + ;
int n,t;
bool used[];
int a[];
bool dfs(int x,int k){
if(used[x]) return ;
if(k==t) return ;
a[k]=x&;
used[x]=;
if(dfs((x<<)&(t-),k+)) return ;
if(dfs((x<<|)&(t-),k+)) return ;
used[x]=;
return ;
}
int main(){
while(~scanf("%d",&n)){
clc(a,);
clc(used,);
t=pow(,n);
printf("%d ",t);
dfs(,);
for(int i=;i<n;i++)
printf("");
for(int j=;j<=t-n+;j++){
printf("%d",a[j]);
}
printf("\n");
}
return ;
}