C++dfs0分求助

P1036 [NOIP2002 普及组] 选数

@[Jadejunxi](/user/1001542) ```cpp #include<bits/stdc++.h> using namespace std; int a[30]; bool check(int x){ for(int i=2;i*i<=x;i++) if(x%i==0) return 0; return 1; } int main(){ int n,k,ans=0; cin>>n>>k; for(int i=0;i<n;i++) cin>>a[i]; int u=1<<n; for(int s=0;s<u;s++) if(__builtin_popcount(s)==k){ int sum=0; for(int i=0;i<n;i++) if(s&(1<<i)) sum+=a[i]; if(check(sum)) ans++; } cout<<ans; return 0; } ``` 我是用位运算做的
by Apress @ 2024-02-14 16:05:57


@[Apress](/user/384419) 我的代码怎么改
by Jadejunxi @ 2024-02-14 16:22:12


@[Jadejunxi](/user/1001542) 1. ```cpp int dfs(int p = 1,int sum=0) ``` 这里你都是强行是1,0了,那你后面的 ```cpp int a = dfs(p+1,sum); int b = dfs(p+1,sum+nums[p]); ``` 有什么用捏? 2.DFS看不懂你在写什么。(我太菜了?
by Apress @ 2024-02-14 16:28:35


thank you
by Jadejunxi @ 2024-02-14 16:35:51


@[Apress](/user/384419) ~~其实我也没看懂~~
by yehaoming @ 2024-02-16 20:26:20


@[Apress](/user/384419) 其实1是默认函数参数的写法
by PhiliaTheCat @ 2024-03-04 12:27:29


|