c++ 洛谷P1036 [NOIP2002 普及组] 选数
·
嗨嗨嗨,又来了哦!今天给大家推出了洛谷P1036 [NOIP2002 普及组] 选数问题,我懒得分析了,直接上代码。。。
#include <bits/stdc++.h>
using namespace std;
int n,k,a[30],ans=0;
bool is_pri(int x){//判断素数代码
if(x<2){
return 0;
}
for(int i=2;i<=x/i;i++){
if(x%i==0){
return 0;
}
}
return 1;
}
//选数个数,可选数起始下标
void dfs(int cnt,int idx,int sum){
if(cnt==k){//选择了k个数,结束递归
if(is_pri(sum)){
ans++;//答案个数+1
}
return;//选了k个数就不再选了
}
for(int i=idx;i<n;i++){//列举所有可选数下标
//不需要标记,因为往后选
//选择第i个数
//数字个数+1,后续选择数字的下标从i+1开始,和增加a[i]
dfs(cnt+1,i+1,sum+a[i]);
//不需要回溯
}
return;
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}//已经选择了0个数,可以从下标0的数开始选
//和当前为0
dfs(0,0,0);//参数记录状态
cout<<ans;
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)