选数(dfs,isprime)

题目:P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com​​​​​​.cn)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
int a[22];
long long ans;
bool isprime(int n){
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0) return false;
	}
	return true;
}

void dfs(int m,int sum,int startx){
	if(m==k){ //m表选数 
		if(isprime(sum)) //当前的和 
		ans++; //符合条件加一 
		return ; //跳到下一循环 
	}
	//startx表示升序排列,以免算重 
    for(int i=startx;i<n;i++)
    dfs(m+1,sum+a[i],i+1); //递归 
    return ;
}

signed main(){
	cin>>n>>k;
	for(int i=0;i<n;i++) cin>>a[i];
	dfs(0,0,0);
	cout<<ans<<endl;
	return 0;
}

从这道题学会的:

  • 深度优先遍历(startx以免算重)
  • 在dfs中return; 是指返回主函数,而主函数中有dfs(0,0,0),则此时dfs有开始重新计数;
相关推荐
洛水水5 分钟前
【力扣100题】53.最长回文子串
算法·leetcode·职场和发展
jieyucx6 分钟前
Go 语言 sort 包详解:从基础排序到自定义排序(含底层原理+零基础看懂)
算法·golang·排序算法·sort
叁散1 小时前
ESP32 LCD1602显示实验报告
算法
过期动态1 小时前
【LeetCode 热题 100】盛最多水的容器
java·数据结构·spring boot·算法·leetcode·spring cloud·职场和发展
凌波粒1 小时前
LeetCode--700.二叉搜索树中的搜索(二叉树)
算法·leetcode·职场和发展
君为先-bey1 小时前
LeMiCa——基于扩散模型的高效视频生成的词典序最小化路径缓存
python·算法·机器学习·扩散模型
洛水水2 小时前
【力扣100题】58.轮转数组
算法·leetcode
资深流水灯工程师2 小时前
LMS 最小均方算法在 DSP 上的 C 语言实现
算法
风筝在晴天搁浅2 小时前
阿里 LeetCode 876.链表的中间节点
算法·leetcode·链表
玖釉-2 小时前
二叉树展开为链表:从先序遍历到原地指针重排
c++·windows·算法·leetcode·链表