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

P1036 选数

点击查看代码
#include<bits/stdc++.h>
using namespace std;int n,m;
int a[25];
long long ans;bool prime(int x)
{if(x==1||x!=2&&x%2==0) return false;for(int i=3;i<=x/i;i++) if(x%i==0) return false;return true;
}
//k表示当前已经选的数的个数,s表示当前的和,x表示下一个选择的数字
void dfs(int k,int s,int x)
{if(k==m){if(prime(s)) ans++;return;}//这样就相当于实现了从n个数中选m个数的功能,for循环结束返回,或者到达个数开始返回,并且因为是传值,所以不需要恢复for(int i=x;i<n;i++) dfs(k+1,s+a[i],i+1);
}int main()
{cin>>n>>m;for(int i=0;i<n;i++) cin>>a[i];dfs(0,0,0);cout<<ans<<endl;return 0;
}
核心在于实现了从n个数中选m的功能,for+递归,而且因为是传值所以不用恢复,很精简的实现
http://www.zskr.cn/news/78146.html

相关文章:

  • CSAPP 存储器层次结构
  • P1030 求先序序列
  • 谷歌反重力 Google Antigravity 常见问题
  • 倍增
  • 12.8每日总结
  • CommonUI-学习记录
  • 银行反欺诈day1
  • 2025年数控折弯机模具选购参考
  • 微信小程序渗透测试
  • 大数据数仓设计:分层架构与维度建模 - Binge
  • Day14-20251208
  • 遇到的前端ts语法问题记录 - wuzx
  • 从纯数学到应用AI科学的职业转变
  • threadDay01
  • 20232404 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 2025.12.7 百度之星决赛 2025
  • Python数据可视化全攻略:Matplotlib/Seaborn从入门到实战
  • 深入设计模式
  • 2025.12.1周总结
  • 小爱帮你拍-使用教程
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 20232421 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 20251206 - 并查集 总结
  • 侯捷 C++ 系列课程
  • Flink学习笔记:时间与Watermark
  • 第11章 泛型、trait与生命周期 - 实践
  • ARC 078D
  • CTT 2026 游记
  • 基于奇异值分解的点云配准原理
  • LogFilter Panel: 我做了一个 grafana 中更好用的 VictoriaLogs 日志筛选面板