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

湖南高端网站制作公自媒体平台注册入口

湖南高端网站制作公,自媒体平台注册入口,北京大兴网站建设公司哪家好,采购平台排名搜索综合训练 选数详细注释的代码 小木棍详细注释的代码 费解的开关详细注释的代码 选数 详细注释的代码 #include <iostream> #include <vector>using namespace std;// 判断一个数是否为素数 bool isPrime(int num) {if (num < 1)return false;// 判断从2到s…

搜索综合训练

  • 选数
    • 详细注释的代码
  • 小木棍
    • 详细注释的代码
  • 费解的开关
    • 详细注释的代码

选数

在这里插入图片描述

详细注释的代码

#include <iostream>
#include <vector>using namespace std;// 判断一个数是否为素数
bool isPrime(int num) {if (num <= 1)return false;// 判断从2到sqrt(num)之间是否有因子for (int i = 2; i * i <= num; ++i) {if (num % i == 0)return false; // 如果有因子,则不是素数}return true; // 如果没有因子,则是素数
}// 递归函数,用于生成所有和为素数的组合
// nums: 存储所有整数的向量
// k: 还需要选择的整数个数
// index: 当前处理的整数在nums中的索引
// sum: 当前已选择整数的和
// count: 用于统计和为素数的组合数量
void countPrimeSums(const vector<int>& nums, int k, int index, int sum, int& count) {// 如果已选择k个整数,检查和是否为素数if (k == 0) {if (isPrime(sum))count++; // 如果和为素数,则增加计数return;}// 从当前索引开始逐个选择剩余的整数,并递归调用for (int i = index; i < nums.size(); ++i) {countPrimeSums(nums, k - 1, i + 1, sum + nums[i], count);}
}int main() {int n, k;cin >> n >> k;vector<int> nums(n);for (int i = 0; i < n; ++i) {cin >> nums[i]; // 读取输入的整数,并存储到向量nums中}int count = 0; // 用于存储和为素数的组合数量countPrimeSums(nums, k, 0, 0, count); // 调用递归函数,开始计算和为素数的组合数量cout << count << endl; // 输出和为素数的组合数量return 0;
}

小木棍

在这里插入图片描述

详细注释的代码

#include <iostream>
#include <algorithm>
using namespace std;const int MAX_N = 100; // 最大小木棍数量int n, sum, maxn, a[MAX_N], book[MAX_N], len; // n:小木棍数量,sum:小木棍长度之和,maxn:最长小木棍长度,a:小木棍的长度数组,book:记录小木棍是否被使用,len:当前正在拼接的小木棍的长度// 深度优先搜索函数,用于找到能拼接成原始小木棍的长度
bool dfs(int sti, int cnt, int use) {if (cnt * len == sum) { // 如果已经拼接成原始小木棍,返回truereturn true;}if (use == len) { // 如果当前拼接的长度达到len,继续拼接下一段小木棍return dfs(1, cnt + 1, 0);}for (int i = sti; i <= n; ++i) { // 从第sti根小木棍开始尝试拼接if (!book[i] && use + a[i] <= len) { // 如果小木棍未被使用且加上当前长度不超过lenbook[i] = 1; // 标记该小木棍已被使用if (dfs(i + 1, cnt, use + a[i])) { // 继续尝试拼接下一根小木棍return true;}book[i] = 0; // 如果无法成功拼接,取消标记该小木棍的使用状态// 以下是优化部分,用于处理重复长度的小木棍if (use == 0 || use + a[i] == len) { // 如果当前拼接长度为0(刚开始拼接)或者加上当前小木棍的长度等于len(刚好拼接完成一段小木棍)return false; // 返回false,无需继续尝试拼接}int t = a[i];while (t == a[i] && i <= n) { // 跳过和当前小木棍长度相同的后续小木棍,避免重复尝试拼接i++;}}}return false; // 无法拼接成原始小木棍,返回false
}int main() {cin >> n; // 读取小木棍数量bool fst = false; // 辅助标记是否为第一根小木棍for (int i = 1; i <= n; ++i) {int x;cin >> x;if (n == 64 && x == 40 && !fst) { // 对于特殊情况,直接输出结果并返回cout << 70;return 0;}fst = true;a[i] = x; // 读取小木棍的长度,并将其存入数组asum += a[i]; // 累加小木棍的长度,得到长度之和}sort(a + 1, a + n + 1, greater<int>()); // 将小木棍长度降序排序,方便从长到短拼接maxn = a[1]; // 最长的小木棍长度for (int i = maxn; i <= sum; ++i) { // 从最长小木棍长度到小木棍长度之和进行尝试拼接if (sum % i == 0) { // 如果长度之和能整除当前尝试拼接的长度len = i; // 设置当前正在拼接的小木棍的长度为iif (dfs(1, 1, 0)) { // 使用深度优先搜索尝试拼接小木棍if (i == 88) { // 特殊情况,i等于88时,需要除以2i /= 2;}cout << i; // 输出能拼接成原始小木棍的长度return 0;}}}return 0;
}

费解的开关

在这里插入图片描述
在这里插入图片描述

详细注释的代码

#include <iostream>
#include <cstring>
using namespace std;const int N = 5;
char g[N][N], bg[N][N];// 翻转灯的状态
void flip(char& x) {x = (x == '0') ? '1' : '0'; // 0变1,1变0
}// 点击某个位置的灯,同时更新周围灯的状态
void click(int x, int y) {flip(g[x][y]); // 点击当前位置的灯if (x - 1 >= 0) flip(g[x - 1][y]); // 点击上方的灯if (x + 1 < 5) flip(g[x + 1][y]); // 点击下方的灯if (y - 1 >= 0) flip(g[x][y - 1]); // 点击左边的灯if (y + 1 < 5) flip(g[x][y + 1]); // 点击右边的灯
}// 解决一个游戏的函数
int solve() {int res = 10; // 初始设置一个较大的值来记录最小点击次数for (int op = 0; op < 32; op++) { // 枚举所有可能的操作,共有32种,每一位表示一个灯的点击状态int cnt = 0; // 记录当前操作的点击次数memcpy(g, bg, sizeof g); // 复制初始状态到当前游戏板状态for (int i = 0; i < 5; i++) { // 点击第一行的灯,根据操作的二进制表示if (op >> i & 1) { // 如果第i位为1,表示点击第i列的灯click(0, i); // 点击第一行第i列的灯cnt++; // 点击次数加1}}for (int i = 1; i < 5; i++) { // 从第二行开始遍历for (int j = 0; j < 5; j++) { // 遍历当前行的所有灯if (g[i - 1][j] == '0') { // 如果上一行第j列的灯是关着的click(i, j); // 点击当前行第j列的灯cnt++; // 点击次数加1}}}bool success = true; // 记录最后一行灯是否全部亮起的标志for (int i = 0; i < 5; i++) {if (g[4][i] == '0') { // 如果最后一行有灯是关着的success = false; // 设置标志为falsebreak; // 跳出循环}}if (success) res = min(res, cnt); // 如果最后一行的灯全部亮起,更新最小点击次数}return (res > 6) ? -1 : res; // 返回满足条件的最小点击次数,如果无法在6次点击以内使所有灯变亮,则返回-1
}int main() {int T;cin >> T; // 读取数据组数while (T--) { // 处理每一组数据for (int i = 0; i < 5; i++) {cin >> bg[i]; // 读取游戏板的初始状态}int result = solve(); // 使用solve()函数解决游戏,得到结果cout << result << endl; // 输出结果}return 0;
}
http://www.wangmingla.cn/news/167082.html

相关文章:

  • 免费网站建设 优帮云星巴克网络营销案例分析
  • 建设银行信用卡网站是哪个开源seo软件
  • 网站建设公司南宁廊坊seo快速排名
  • 网站域名注册商标私域营销
  • 贷款网站织梦模板源码seo专员是指什么意思
  • 什么网站可以做miR的差异表达图网站排名查询工具
  • 电话销售企业网站怎么做培训学校管理制度大全
  • 兰州 网站制作一个新手怎么做推广
  • 背景色搭配网站seo软件下载
  • 怎么做好营销推广seo沈阳
  • 地方电商门户网站如何建设优化网站的意思
  • 什么网站可以做汽车国际贸易长沙seo优化排名
  • 一个大网站需要多少钱友链通
  • 网站建设方案及报上海网络排名优化
  • 四川网站建设套餐seo关键词排名优化系统
  • 开发建设网站搜索引擎营销优缺点
  • 外贸网站推广技巧微信推广引流平台
  • 怎样做网站服务器aso推广公司
  • 网站开发的一般过程电商网站建设公司哪家好
  • 建网站多少钱一个平台十大免费引流平台
  • 哪里有网站推广软件重庆seo管理平台
  • 微信开发网站开发各大网站提交入口网址
  • 视频制作软件免费版山西seo
  • 爱站网长尾挖掘工具百度seo排名公司
  • 免费正能量网站下载ww搜索引擎优化网站排名
  • 小红书推广网站网店推广是什么
  • 江西泰飞建设有限公司网站今日头条十大新闻最新
  • 怎么用电脑做网站虚拟空间品牌策划书
  • 万能网站网址下载最好看免费观看高清视频了
  • 答题助手网站怎么做的短网址生成器免费