iis5.1建网站php培训机构企业做网站

news/2025/10/2 9:42:34/文章来源:
iis5.1建网站,php培训机构企业做网站,绵阳网站建设高端品牌,html购物网站源码炮兵问题的优化#xff0c;设立逻辑数组 蛮力法设计思想 有策略地穷举 验证 制定穷举策略避免重复 简单来说#xff0c;就是列举问题所有可能的解#xff0c;然后去看看是否满足题目要求#xff0c;是一种逆向解题方式。#xff08;我也不知道答案是什么#xff0c;… 炮兵问题的优化设立逻辑数组 蛮力法设计思想 有策略地穷举 验证 制定穷举策略避免重复 简单来说就是列举问题所有可能的解然后去看看是否满足题目要求是一种逆向解题方式。我也不知道答案是什么但是我知道答案肯定在这些范围里面我一个个试就完了。 所以我们应该做的是 知道可能的答案都有哪些使用方法将其一一列举将每个解依次与条件比照 蛮力法使用范围 所有解空间例如a,b,c取值范围都是 0~9问abc组成的三位数的所有情况所有路径遍历图、遍历树 蛮力法的格式 蛮力法由循环和选择语句构成 使用循环穷举所有情况使用选择判断当前情况是否成立 若成立则得到问题的解若不成立则继续循环 循环 分支 for(){for(){// 获取X所有可能的情况if(X满足条件){printf(X);}} }蛮力法思想穷举所有情况找到符合条件的。 这也意味着得能够穷举因此问题规模不能太大。 示例1求完全数 思想穷举所有数字将符合条件的找出来。 关键点求数字的所有因子。 对于数x因子y需要x % y 0此处y也需要尝试1 ~ x-1的所有数。 判断因子和是否等于x。 因此程序为 // 求完全数 #include iostream using namespace std;int main() {for (int i 2; i 1000; i) {int sum 0;for (int j 1; j i - 1; j) {if (i % j 0) { // 若是因子sum j;}}if (sum i) {cout 完全数 i endl;}}return 0; } 这里还有点bug是数学知识不完备因子在1 ~ m/2的范围因子不可能比原数字的一半还要大除了它本身我们循环地太多了。内循环应该是j i/2。 结果为 我们需要非常清晰地体会到构建程序框架的思维过程。 int main() {// 穷举所有情况for (int i 2; i 1000; i) {// 求因子之和// 比较因子与该数是否相等}return 0; }然后我们再实现其细节。 充分体会穷举情况再依次判断的计算过程。 示例2求水仙花数 在数字100~999中求水仙花数例如13 53 33 153。 同样地穷举 验证。 关键点求一个三位数的每一位的数。 先建立思维框架 // 穷举100~999的所有数字 for(){// 求三位数的每一位数将其立方和相加// 判断数字与其立方和是否相等}代码为 // 求水仙花数 #include iostream using namespace std;int main() {for (int i 100; i 999; i) {int sum 0;int temp i;while (temp){int x temp % 10;sum (x*x*x);temp / 10;}if (i sum) {cout 水仙花数 i endl;}}return 0; }答案为 再强调一遍 循环 选择先构建思维框架再填充细节 示例3象棋算式 我们先将问题的输入找到也就是5个变量且满足 每个变量范围是0~95个变量各不相同 然后穷举所有的可能性看是否能够满足表达式这是恐怖的5层循环但是问题规模还在可接受范围内。 我们试试看。 兵a炮b马c卒d车e #include iostream using namespace std;int main() {int a, b, c, d, e;for (a 0; a 9; a) {for (b 0; b 9; b) {for (c 0; c 9; c) {for (d 0; d 9; d) {for (e 0; e 9; e) {// 若5个数都不同再看是否满足表达式if (!(a b || a c || a d || a e|| b c || b d || b e|| c d || c e|| d e)) {int add1 a * 1000 b * 100 c * 10 d;int add2 a * 1000 b * 100 e * 10 d;int sum e * 10000 d * 1000 c * 100 a * 10 d;if (sum add1 add2) {cout 兵 a 炮 b 马 c 卒 d 车 e endl;}}}}}}}return 0; }结果是 不过显然太低效率了如果有n的话这个算法的时间复杂度是O(n5)这几乎是不可接受的太暴力了问题规模显得有点大是105了。 所以我们虽然遵循了 循环 选择但是穷举地过于直接看看有没有其他办法呢 思想即便是穷举也要“聪明地”穷举 同样是穷举也有不同的方法最粗暴的就是循环一层循环不行就嵌套多重循环……好蠢但是很简单好想。 我们来看看同样是穷举不同做法的差异。 示例 对于一个含有6个元素的一维数组该数组每个数只能是0或1将所有情况穷举出来。 例如(0,0,0,0,0,0)、(0,1,0,1,1,0) 最愚蠢的做法直接6重循环。 #include iostream using namespace std;int main() {int a, b, c, d, e, f;int number[6];for (a 0; a 1; a) {for (b 0; b 1; b) {for (c 0; c 1; c) {for (d 0; d 1; d) {for (e 0; e 1; e) {for (f 0; f 1; f) {number[0] a;number[1] b;number[2] c;number[3] d;number[4] e;number[5] f;for (int i 0; i 6; i) {cout number[i] ;}cout endl;}}}}}}return 0; }结果 这的确可以完成任务但是这样的算法真的很糟糕不是吗 我们来看看优化后的穷举的方法 我们将其与二进制结合因为对于这样的0、1序列与二进制有直接联系我们直接将十进制是0~63转换为二进制存入数组中就可以了这样大大降低了时间复杂度 #include iostream using namespace std;int main() {int number[6];for (int i 0; i 63; i) {// 转换为二进制除二求余再倒置int temp i;for (int j 5; j 0; j--) {number[j] temp % 2;temp / 2;}// 输出结果for (int k 0; k 6; k) {cout number[k] ;}cout endl;}return 0; }穷举加验证循环加选择蛮力解难题 穷举有方法验证有策略循环尽量浅选择看题目 我们之前谈过穷举法需要能够穷举数据规模不太大现在我们在此基础上进行了优化同样能够穷举的穷举方式的选择也很重要。 对于循环我们希望尽可能减少嵌套层数。 当然了简单的属于通用普适技法稍难的就需要动用你的观察力但是这些东西你熟悉了也就变成了简单的了。 接下来我们尝试优化示例3。 示例3优化 我们只关注如何进行穷举并且尽可能减小穷举规模空间关注一个条件5个数各不相同。 这样一来我们的问题规模就由105 10,000 变成了 10 x 9 x 8 x 7 x 6 30,240 变成了原来的30%左右。 可以用多重循环来列举出它们各种不同的取值情况逐一地判断它们是否满足上述等式为了避免同一数字被重复使用可设立逻辑数组xx[i]0≤i≤9值为1时表示数i没有被使用为0时表示数i已被使用。 int main() {int x[10];int a, b, c, d, e, i, m, n, s;for (i 0; i 9; i) x[i] 1; /*x数组置初值*/for (a 1; a 9; a){x[a] 0; /*表示不能再让其他变量取与a相同的值*/for (b 0; b 9; b)if (x[b]) /*如果b取的当前值未被其他的变量重复*/{x[b] 0; /*表示不能再让其他变量取与b相同的值*/for (c 0; c 9; c)if (x[c]) /*如果c取的当前值未被其他的变量重复*/{x[c] 0; /*表示不能再让其他变量取与c相同的值*/for (d 0; d 9; d)if (x[d]) /*如果d取的当前值未被其他的变量重复*/{x[d] 0; /*表示不能再让其他变量取与d相同的值*/for (e 0; e 9; e)if (x[e]){m a * 1000 b * 100 c * 10 d;n a * 1000 b * 100 e * 10 d;s e * 10000 d * 1000 c * 100 a * 10 d;if (m n s)printf(兵:%d 炮:%d 马:%d 卒:%d车:%d\n,a, b, c, d, e);}x[d] 1; /*本次循环未找到解,让d取其他值*/}x[c] 1; /*本次循环未找到解,让c取其他值*/}x[b] 1; /*本次循环未找到解,让b取其他值*/}x[a] 1; /*本次循环未找到解,让a取其他值*/}return 0; }重要的收获穷举有方法不能上来题都不看就开始举有条件地穷举减少解空间对于本题5个数不同可以当作题目条件来验证也可以当成穷举的约束条件。 同样的条件不同的看法就会产生不同的解决方案。 还记得离散数学中的附加条件证明法吗将结论中的前提当条件用再推出最终结论极大简化了运算。 百元买百鸡问题 已知公鸡5元一只母鸡3元一只小鸡1元三只用100元买100只鸡问公鸡、母鸡、小鸡各多少只 知道解空间 公鸡x 0~20母鸡y 0~33小鸡z 0~100 如何列举 最简单思路三重循环 如何验证 x y z 1005x 3y z/3 100z % 3 0这样看来可以将z变量去掉了解空间也减少了100倍三重循环也变成了二重循环。也就是我们将验证条件当成解空间的约束条件减少了解空间的规模这与我们上面的示例3优化是一个思路。 注意小鸡是1元3只需要注意 z/3 时int会去掉小数点需要验证z是3的倍数。 #include iostream using namespace std;int main() {int x, y, z;for (x 0; x 20; x) {for (y 0; y 33; y) {if ((100 - x - y) % 3 0) {if ((5 * x 3 * y (100 - x - y) / 3) 100) {cout 公鸡 x endl;cout 母鸡 y endl;cout 小鸡 100 - x - y endl;cout ********** endl;}}}}return 0; }示例 求所有的三位数,它除以11所得的余数等于它的三个数字的平方和. 分析 解空间三位数x100~999如何枚举循环如何验证约束条件x % 11 三个数字平方和约束条件可否去限制解空间? 否 #include iostream using namespace std; // 求所有的三位数,它除以11所得的余数等于它的三个数字的平方和. int main() {for (int i 100; i 999; i) {// 求三个数平方和int sum 0;int temp i;while (temp){int x temp % 10;sum (x * x);temp / 10;}// 验证if (sum i % 11) {cout 数字 i endl;}}return 0; }结果 对问题进行建模 我们进一步分析上一题 求所有的三位数,它除以11所得的余数等于它的三个数字的平方和. 假设3位数A的三个数是xyz。 0 A % 11 10x2 y2 z2 10x*100 y*10 z A1 x 3 0 y 30 z 3且都是整数 这样一来经过简单的人工处理解空间减少了很多然后再进行 穷举 验证 就可以了显然比之前的更加高效因为进行了人工分析。 int x, y, z; for (x 1; x 3; x) {for (y 0; y 3; y) {for (z 0; z 3; z) {int num x * 100 y * 10 z;if ((x*x y * y z * z) num % 11) {cout 数字 num endl;}}} }这里强调的其实也是将验证条件进一步分析将其转换为解空间的约束条件以降低解空间规模。 穷举 验证穷举范围、穷举方式、验证条件、约束条件 我们再回顾之前的例子充分体会穷举法的分析思路。 穷举依赖的技术是遍历也就是解空间的每个解都要找一遍注意尽量避免充分。 示例1 解空间2~1000验证条件各因子之和等于本身约束条件没有可以转化的验证条件穷举方式解空间 约束条件–循环 示例2 在数字100~999中求水仙花数例如13 53 33 153。 解空间100~999验证条件水仙花数约束条件无穷举方式解空间约束条件–循环 示例3 解空间5个变量每个变量范围0~9验证条件满足题目表达式约束条件5个变量各不相同穷举方式解空间约束方式–减小解空间–5重循环如果有值重复则跳出 示例4 对于一个含有6个元素的一维数组该数组每个数只能是0或1将所有情况穷举出来。 例如(0,0,0,0,0,0)、(0,1,0,1,1,0) 注意本题本身就是求解空间 解空间6个数每个数是0或1求全部的0、1序列验证条件情况不重复约束条件无穷举方式解空间约束条件–6重循环 问题建模 转化类二进制数 很明显这题的0、1序列与二进制数类似可以转换问题改为求0~63十进制的二进制间接解题。 属于特殊解法需要惊人的洞察力。 示例5 已知公鸡5元一只母鸡3元一只小鸡1元三只用100元买100只鸡问公鸡、母鸡、小鸡各多少只 原始解空间3个变量x∈[0,20]y∈[0,33]z∈[0,100]验证条件 x y z 100看做约束条件5x 3y z/3 100z / 3为整数z % 3 0 约束条件将验证条件中第一条转换为约束条件也就是z 100 - x -y这与就去掉了一个变量这个变量范围最大能够充分减少解空间。约束后解空间2个变量x∈[0,20]y∈[0,33]穷举方式双重循环 注意谁是验证条件谁是约束条件是跟你的看法有关的。 示例6 求所有的三位数,它除以11所得的余数等于它的三个数字的平方和. 原始解空间数字A三个位是xyzA范围100~999验证条件 A % 11 x2 y2 z2 约束条件由验证条件进一步分析得出需要有经验和洞察力 A % 11 ∈[0,10]x∈[1,3]y∈[0,3]z∈[0,3] 约束后解空间x∈[1,3]y∈[0,3]z∈[0,3]穷举方式三重循环 备注验证方式需要具体问题具体分析。 充分体会不同算法的组合因为一道题目可能背后涉及到多个不同的算法的组合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设wix帝国cms能做手机网站吗

1、拷贝构造函数 1.1 什么是拷贝构造函数 拷贝构造函数是一种构造函数,它的功能是创建新对象。也就是说对象还没生成,这时利用另一个对象的拷贝来生成新的对象。 class MyDemo { public:// 默认构造函数MyDemo(){}// 拷贝构造函数MyDemo(const MyDemo…

做网站必须认证吗武夷山网站推广服务

为缓解民生山西认证压力,提高认证效率与认证率,山西省社保局推出“老来网”认证手机app,请未认证人员以及民生山西无法认证人员,采用此认证方式。附:民生山西APP认证流程老来网APP具体操作流程如下:一、 老…

负载均衡式的在线OJ项目编写(七) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Arduino-Yun-物联网指南-全-

Arduino Yun 物联网指南(全)原文:zh.annas-archive.org/md5/5adfde3977d9c1890a46c10dfc85e6f2 译者:飞龙 协议:CC BY-NC-SA 4.0前言 物联网(IoT)是科技界的一个增长话题,越来越多的使用众筹活动资助的硬件项目…

深入解析:【笔记】在WPF中Binding里的详细功能介绍

深入解析:【笔记】在WPF中Binding里的详细功能介绍2025-10-02 09:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

2025雕塑厂家TOP企业品牌推荐排行榜,婚庆泡沫雕塑,玻璃钢,城市地标不锈钢,校园筑铜,道具,文旅,婚礼堂泡沫,直播间实景泡沫,水泥景观,商业美陈发光雕塑公司推荐!

当前雕塑行业在发展过程中,面临着多重亟待解决的问题。从成本层面来看,部分企业因存在中间商环节,导致产品价格虚高,客户难以获得高性价比的雕塑产品;在定制能力上,一些厂家受限于设备水平和专业团队配置,无法满…

Code--Blocks-和-C---应用开发-全-

Code::Blocks 和 C++ 应用开发(全)原文:zh.annas-archive.org/md5/D136533EB1CB1D754CE9EE199A478703 译者:飞龙 协议:CC BY-NC-SA 4.0前言 《使用 Code::Blocks 进行 C++开发》是一本简洁实用的应用程序开发指南…

做网站网上接单如何引流客源最快的方法

要设计出用户喜欢的界面,你可以考虑以下几个方面: 用户研究:首先要了解用户的需求和偏好。你可以通过用户调研、用户访谈和数据分析来获取这些信息。了解用户的行为模式、喜好和痛点,有助于设计出更吸引人的界面。 直观的布局&am…

VMware Service某些服务关闭导致虚拟机开机无法获取IP地址

现象: windows下运行着vmware,有一天发现所有虚拟机启动后全部没了IP地址,设置的虚拟机网络为NAT模式。 原因: 应该不是虚拟机的问题,此刻想到前些时候由于windows电脑卡顿, 一股脑关闭了了很多自启动的服务,问…

2025中国无缝钢管厂家 TOP 品牌权威推荐,SA106 无缝钢管,A106B 无缝钢管,SA53B 无缝钢管精选无缝钢管工厂

在无缝钢管行业,随着市场需求的不断增长,各类供货厂家层出不穷,但也带来了诸多问题。部分厂家为追求利润,降低生产标准,导致产品质量参差不齐,存在尺寸偏差、材质不达标等情况,给下游企业的生产安全和项目质量埋…

正能量网站地址链接免费燕郊医疗网站建设

【优选生产报工系统:数据分析、产品管理与基础数据登录的关键选择要素】 在快速变化的制造业环境中,生产报工系统的重要性不言而喻。它不仅仅是一种记录工时和监控生产进度的工具,更是一种能够实现数据驱动决策、优化产品管理和确保基础数据…

总结Vue.js等成功项目的生态建设经验 - 实践

总结Vue.js等成功项目的生态建设经验 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

完整教程:Java EE初阶启程记03---Thread类及常见方法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

在AI技术唾手可得的时代,挖掘用户真实需求成为产品成功的关键——某知名设备电量监控工具需求探索

本文基于某知名设备电量监控工具的文档和用户反馈,深入分析其核心功能和应用场景,并重点挖掘用户提出的新功能需求,为产品迭代提供有价值的参考方向。内容描述核心功能定位:该项目是一款专注于在Mac系统上监控和管…

岐山网站开发广州花都区网站建设

或按照S5PV210学习秩序。我们首先解决的关键问题。TQ335x有六个用户按钮,每个上、下、剩下、对、Enter和ESC。我想开始学习S5PV210当同一,写输入子系统驱动器的关键问题要解决,但浏览driver/input/keyboardgpio-keys.c,大体上看下…

wordpress 网站显示加载时长山东建设厅官方网站二建报名

vue创建完项目以后如果报parsing error no babel config file。。。这样的错误的话,关闭项目,用vscode进入项目中打开项目就可以解决了。 1 代码保存的时候会自动将单引号报错为双引号 导致eslint报错的问题, 解决思路: 在项目根…

网站设计用什么软件做的抚州律师网站建设

Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如…

2025 年润滑脂厂家 TOP 企业品牌推荐排行榜,道达尔润滑脂,工业润滑脂,合成润滑脂,高温润滑脂,轴承润滑脂推荐这十家公司!

在当前工业生产领域,润滑脂作为保障设备稳定运行的关键耗材,其品质与供应服务的重要性日益凸显。然而,市场上润滑脂品牌数量众多,产品质量参差不齐,给企业采购带来诸多困扰。部分品牌存在产品参数不达标、供应链不…

2025切割机厂家TOP企业品牌推荐排行榜,五轴水刀,大理石水刀,全自动水刀,高压水刀,手持式水刀,高压水刀,大理石水刀,便携式水刀切割机公司推荐!

在当前制造业快速发展的背景下,切割机作为关键加工设备,其市场需求持续攀升,但行业也面临诸多亟待解决的问题。一方面,市场上切割机品牌数量众多,产品质量参差不齐,部分厂家为追求短期利益,在生产过程中降低标准…

二十八、API之《System 类》——与框架交互的“桥梁”

二十八、API之《System 类》——与框架交互的“桥梁”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…