当前位置: 首页 > news >正文

组合问题变式——选数(dfs)

代码随想录听课笔记1——回溯算法-CSDN博客

这是从1,2,3...,n个数字中选出k个数的组合,输出组合的全部可能的代码

//组合:返回1-n中所有个数为k的组合 1,2,3,4
#include<bits/stdc++.h>
using namespace std;
#define MAX 1010
int result[MAX];
//u表示选了几个数 
void dfs(int u,int n,int k,int startIndex){if(u==k){for(int i=0;i<k;i++){cout<<result[i]<<" ";}puts("");return;}for(int i=startIndex;i<=n;i++){result[u]=i;dfs(u+1,n,k,i+1);}
}int main(){int n,k;cin>>n>>k;dfs(0,n,k,1);return 0;
}

上面的代码相当于选出了索引,比如1,2,3。我们只需要把n个整数放入一个数组中即可,然后相当于选出了数组的索引,通过数组的一一映射关系相当于选出了所对应的数字。然后把这些数字相加判断是否是素数即可啦!
 

//组合:返回1-n中所有个数为k的组合 1,2,3,4
#include<bits/stdc++.h>
using namespace std;
#define MAX 1010
int result[MAX];
int num[30];
int cnt = 0;
bool isPrime(int x) {if (x < 2) return false; // 0和1不是素数if (x == 2) return true;  // 2是素数// 只检查2到sqrt(x)之间的因子int limit = sqrt(x);     // 提前计算平方根for (int i = 2; i <= limit; i++) {if (x % i == 0) {return false;  // 如果能整除,说明不是素数}}return true;  // 没有找到因子,是素数
}
//u表示选了几个数 
void dfs(int u,int n,int k,int startIndex){if(u == k){int sum = 0;for(int i = 0;i<k;i++){sum += num[result[i]];}if(isPrime(sum))cnt ++;return;}for(int i = startIndex;i <= n;i ++){result[u] = i;dfs(u + 1,n,k,i + 1);}
}int main(){int n,k;cin >> n >> k;for(int i = 1;i <= n;i ++){cin >> num[i];}dfs(0,n,k,1);cout<<cnt;return 0;
}


http://www.mrgr.cn/news/79050.html

相关文章:

  • 使用ensp搭建内外互通,使用路由跨不同vlan通信。
  • 【每天一篇深度学习论文】(IEEE TIP)即插即用多尺度特征提取模块MSB
  • 探索 Go 语言中的 tk9.0 库:功能、应用与潜力
  • Flutter中的Future和Stream
  • JavaSE学习心得(APL与算法篇)
  • DDOS分布式拒绝服务攻击
  • 嵌入式硬件面试题【经验】总结----会不断添加更新
  • IDL学习笔记(二)IDL处理卫星数据
  • 使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错
  • L15.【LeetCode笔记】相同的树
  • 同时将scss全局变量注入、Tailwind样式使用、自己插件配置到vite
  • 汽车IVI中控OS Linux driver开发实操(二十七):常用Linux指令
  • 记录vite关于tailwindcss4.0-bate4出现margin[m-*]、padding[p-*]无法生效的问题。
  • 神经网络中的优化方法(一)
  • Android 应用单元测试涉及 Telephony 环境初始化问题
  • 浏览器的事件循环机制
  • 深入解析 Dubbo 中的常见问题及优化方案: 数据量限制与配置错误20241203
  • 嵌入式系统应用-LVGL的应用-平衡球游戏 part1
  • 三维地形图计算软件(四)-用PYQT5+vtk画任意多面体示例
  • 澎峰科技助力中国移动 重磅发布智算“芯合”算力原生基础软件栈2.0
  • 网络安全-夜神模拟器如何通过虚拟机的Burp Suite代理应用程序接口
  • 3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch
  • PROTEUS资源导引
  • flask的第一个应用
  • 浏览器渲染原理
  • 异常知识及其使用