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

蓝桥OJ 2942数字王国之军训排队 DFS剪枝

 蓝桥OJ 2942数字王国之军训排队

#include<bits/stdc++.h>
using namespace std;const int N = 15;//最多10队
int a[N], n;
vector<int>v[N];//二维数组 v[i]记录队伍i中所有人的编号bool dfs(int cnt, int dep)
{if (dep == n+1){//判断合法性for (int i = 1; i <= n; i++){for (int j = 0; j < v[i].size(); j++){for (int k = j + 1; k < v[i].size(); k++){if (v[i][k] % v[i][j] == 0) return false;}}}return true;}//枚举每个人所属的队伍for (int i = 1; i <= cnt; i++){v[i].push_back(a[dep]);if (dfs(cnt,dep+1))return true;v[i].pop_back();}return false;
}
int main()
{cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + 1 + n);//因为n的范围比较小,所以可以从小到大遍历出最少可以分成的队伍for (int i = 1; i <= n; i++){if (dfs(i, 1)){cout << i << '\n';break;}}return 0;
}

上面的方法有一个测试点出现了超时,所以下面用剪枝修改  

#include<bits/stdc++.h>
using namespace std;const int N = 15;//最多10队
int a[N], n;
vector<int>v[N];//二维数组 v[i]记录队伍i中所有人的编号bool dfs(int cnt, int dep)
{if (dep == n+1) return true;//枚举每个人所属的队伍for (int i = 1; i <= cnt; i++){bool tag = true;for (const auto& j : v[i]){if (a[dep] % j == 0){tag = false;break;}}if (!tag)continue;v[i].push_back(a[dep]);if (dfs(cnt,dep+1))return true;v[i].pop_back();}return false;
}
int main()
{cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + 1 + n);//因为n的范围比较小,所以可以从小到大遍历出最少可以分成的队伍for (int i = 1; i <= n; i++){if (dfs(i, 1)){cout << i << '\n';break;}}return 0;
}

http://www.lryc.cn/news/309907.html

相关文章:

  • SSL证书
  • 【C++】string 类 ( 上)
  • 《中华人民共和国消防法》(2021年修订版)解读
  • vue+element模仿实现云码自动验证码识别平台官网
  • 蓝桥杯练习系统(算法训练)ALGO-992 士兵杀敌(二)
  • Pycharm下如何生成exe软件
  • KubeSphere平台安装系列之三【Linux多节点部署KubeSphere】(3/3)
  • YOLOv9独家改进|动态蛇形卷积Dynamic Snake Convolution与空间和通道重建卷积SCConv与RepNCSPELAN4融合
  • XSS初级漏洞靶场
  • k8s pv与pvc理解与实践
  • Unity游戏输入系统(新版+旧版)
  • 区块链媒体:链游媒体宣发渠道9个方法分享-华媒舍
  • LeetCode--42
  • 【解决】虚幻导入FBX模型不是一个整体
  • 第四十八回 解珍解宝双越狱 孙立孙新大劫牢-Python模块和包概念与使用
  • 【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器
  • 【axiox】前后端接口通讯数据交互
  • 《Linux C编程实战》笔记:共享内存
  • 【GitHub】修改默认分支
  • 常用Linux 命令汇总
  • 13 双口 RAM IP 核
  • 【高级数据结构】Trie树
  • 国际化 Vue-i18n的安装与使用 (Vue2.0 / Vue3.0)
  • Linux 学习笔记(8)
  • 【python】1.python3.12.2和pycharm社区版的安装指南
  • Ubuntu将c++编译成.so文件并测试
  • 数据分析-Pandas数据的探查面积图
  • 美团分布式 ID 框架 Leaf 介绍和使用
  • Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项
  • 【论文阅读-PRIVGUARD】Day4:3节