信奥赛算法专题

课程简介:

今天分享的本节我们利用二分法来实现一下开根号问题,给定一个附点数k大于等于1,小于等于10的5次方,请输出k的平方根x,使得x乘以x与k的误差不超过0.001,是用负责运算分支判断、循环来实现,不可以直接使用sq,r,t这个库。
函数输入就是这个浮点数,k输出就是k的平方根x保留3位有效数字样例输入3的话,样例输出就是1.7325.0的话就是2.236。如果输入的是3.14,输出就是1.772,那么这个根号的范围它就是一定是从1到这个自身之间。我们就可以考虑每一次都取一个中间值,然后让这个中间值做一个平方的运算,然后减去一下这个误差,然而这个误差可能是正数,也可能是负数,所以我们可以使用绝对值来给它做一个正式的处理。
如果我们发现这个误差它是小于0.001的话,就相当于我们已经找到了这个数,直接跳出。那么否则如果我们进行一个2分,如果k的值小于这个幂的平方的话,我们就把and等于幂的,否则就把start等于幂的,那么接下来就在程序当中来实现一下。
首先我们来定义一下这个误差,它是一个常量,0.001,然后接下来再来定一下这个k,然后把这个k给它读进来,我们需要求的是k的这个根号,然后再来定义一下这个istart,SR从一开始,然后iand的值就是这个k,然后接下来就是循环条件猜根号,这个条件成立就是istart,它是小于等于这个iand的
然后提前我们再把这个中间值MID给它声明一下,因为这个MID最终要打印出来,如果在Y2循环里面就声明meet的话,Y2循环结束之后,这个meat的生命周期就已经结束了,然后这个meet就等于istart,加上这个and,然后减除以2。
然后我们再来求一下这个d,这个d就是我们真正的误差,这个误差它可能是一个正数,可能是一个负数,所以我们这里需要引入一下这个cMax数学库用到里面的这个FABS,这个就是绝对值,它是mid乘以mid,然后再减一下这个k,这个就是我们真正的误差。然后接下来如果说找到了它是什么条件,那也就是说我们这个误差它是小于等于这个DIFF的,那这个时候我们直接跳出就可以了。那么否则,如果我们就开始进行二分,否则如果就是k的值,第一种它是小于这个幂的乘幂的,那么如果是这种情况的下,那我们就把右侧这一半儿给它去掉,所以把这个and给它复制为MID,那么否则就把左边这一半给它去掉,那也就是说istart等于MID。
最后的结果,我们只要打印一下这个meet就可以了,然后保留三位小数,这里我们应考虑一下CSTDIO,在保留几位小数的时候,我觉得使用这个printof是比较方便的。小数点儿后面三位点儿3,然后LF是double的数据类型,然后是MID,我们输一下这个5,结果是2.236,那这个程序也是没有问题的。

课程截图:

课程目录:

递归算法.mp4
递归算法.pptx
二分查找.cpp
斐波那契数列.mp4
斐波那契数列1.cpp
斐波那契数列2-数组优化.cpp
汉诺塔.cpp
阶乘.cpp
递归算法
Catalan数.cpp
递推算法.mp4
递推算法.pptx
第二类Stirling数.cpp
骨牌问题.cpp
汉诺塔高度.cpp
平面分割.cpp
位数问题.cpp
位数问题.mp4
五种典型递推关系.mp4
递推算法
1.数字三角形模型
2.线性DP
3.背包问题
动态规划
归并排序
快速排序
源码
分治算法.docx
分治算法.mp4
分治算法概念.pptx
开根号.mp4
快速幂.mp4
扑克牌二分插入.mp4
数组的第k大元素.mp4
数组二分查找.mp4
找数.mp4
分治算法
源码
队列和广度优先搜索.pptx
队列数据结构.mp4
广度优先搜索算法.mp4
广度优先搜索
马走日.cpp
全排列问题.mp4
深度优先搜索.pptx
数字全排列123.cpp
搜索与回溯算法.mp4
深度优先搜索
第六章贪心算法.zip
贪心算法

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
亲子考试考证初中

申怡《“读”领风骚:上下诗词五千年》等系列课

2022-5-17 7:46:04

亲子考试考证初中

平哥《平说历史-秦汉变局》等系列课

2022-5-20 7:45:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索