为什么会输出一个特别诡异的数啊……求救

P1896 [SCOI2005] 互不侵犯

仔细看这句: ```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


|