仔细看这句:
```cpp
printf("%lld",&haha);
```
by Error_502 @ 2018-05-27 15:37:11
@[502_Bad_Gateaway](/space/show?uid=78393) 谢谢dalao Orz
但是它现在一直输出0……
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,k;
//int dp[maxn][maxn];
const int maxn=9+5;
long long dp[maxn][maxn*maxn][1000];
int num1(int x)
{
int cnt=0;
do
{
if(x%2) cnt++;
x/=2;
}while(x);
return cnt;
}
int opt(int i,int j,int k)
{
if(i==1)
{
if((j==num1(k))&&(!(k<<1)&k)) return 1;
else return 0;
}
if(dp[i][j][k]!=-1) return dp[i][j][k];
long long ans=0;
int k1=num1(k);
//cout<<k1<<endl;
//dp[i][j][k]=sum{dp[i-1][j-?][l]};
for(int l=0;l<=(1<<n)-1;l++)
{
if((l&k)||((l<<1)&k) ||((l>>1)&k)) continue;
if((l&(l<<1)) || (l&(l>>1))) continue;
ans+=opt(i-1,j-k1,l);
}
return dp[i][j][k]=ans;
}
int main()
{
memset(dp,-1,sizeof(dp));
scanf("%d",&n,&k);
long long haha=opt(n+1,k,0);
printf("%lld",haha);
return 0;
}
```
by 张文思 @ 2018-05-27 15:42:34
@[张文思](/space/show?uid=52349) 那你需要去找别的大佬了
by Error_502 @ 2018-05-27 15:49:14
@[张文思](/space/show?uid=52349)
```
if((j==num1(k))&&(!(k<<1)&k)) return 1;
```
优先级错误。
应把`!`写在括号外。
by Qwer_Tyui @ 2018-05-27 16:16:46
还有
请您仔细看看`scanf`
by Qwer_Tyui @ 2018-05-27 16:20:37
@[Qwer_Tyui](/space/show?uid=83553)
我改成了这样,但是它还是一直输出1
求救啊
```cpp
if((j==num1(k))&&(!(k<<1)&k)) return 1;
```
by 张文思 @ 2018-05-27 16:22:18
@[张文思](/space/show?uid=52349)
改成
```
if((j==num1(k))&&!((k<<1)&k)) return 1;
```
by Qwer_Tyui @ 2018-05-27 16:27:37
@[Qwer_Tyui](/space/show?uid=83553) 啊啊啊谢谢!!!
%%%%%%
by 张文思 @ 2018-05-27 16:38:46