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

苏州免费自助建站网站建设网站怎么做pc端盒子

苏州免费自助建站网站建设,网站怎么做pc端盒子,佛山禅城区网站建设公司,青岛住房和城乡建设厅网站本专栏为c语言练习专栏#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新#xff0c;通过每天练习#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字#xff1a;记负均正    旋转数组的最小数字    二分查找 #x1f493;博主… 本专栏为c语言练习专栏适合刚刚学完c语言的初学者。本专栏每天会不定时更新通过每天练习进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字记负均正    旋转数组的最小数字    二分查找 博主csdn个人主页小小unicorn ⏩专栏分类C语言天天练 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 Day1 题目一题目描述解题思路代码实现结果情况 题目二题目描述解题思路1.为什么想到二分查找2.如何解决分段单调的问题3.上面的写法发生错误,为什么呢4.如何解决重复的问题? 代码实现结果情况 总结 题目一 题目描述 题目来源记负均正 首先输入要输入的整数个数n然后输入n个整数。输出为n个整数中负数的个数和所有正整数的平均值结果保留一位小数。 0既不是正整数也不是负数不计入计算。如果没有正数则平均值为0。 数据范围 1≤n ≤2000 输入的整数都满足 ∣val∣≤1000 输入描述 首先输入一个正整数n 然后输入n个整数。 输出描述 输出负数的个数和所有正整数的平均值。 解题思路 1.边输入边统计负数个数 2.边输入边统计正整数个数注意0既不是正整数也不是负整数否则求平均会出问题 3.求平均时特殊处理除数为0的情况 代码实现 #includestdio.hint main() {int cnt;int num[2000];int avr 0;int negtive 0;float sum 0;scanf(%d, cnt);for (int i 0; i cnt; i) {scanf(%d, num[i]);if (num[i] 0) {negtive;}if (num[i] 0) {avr;sum num[i];}}//输出负数个数|所有正数平均值结果保留一位小数if (avr 0) {//考虑除数为0的情况printf(%d 0.0\n, negtive);}else {printf(%d %0.1f\n, negtive, sum / avr);}return 0; } 结果情况 符合题目要求问题解决。 题目二 题目描述 题目来源旋转数组的最小数字 有一个长度为 n 的非降序数组比如[1,2,3,4,5]将它进行旋转即把一个数组最开始的若干个元素搬到数组的末尾变成一个旋转数组比如变成了[3,4,5,1,2]或者[4,5,1,2,3]这样的。请问给定这样一个旋转数组求数组中的最小值。 解题思路 这道题目,我们可以采用一个方法:二分查找. 1.为什么想到二分查找 二分查找的本质的本质是二段性只要满足二段性的问题都可以使用二分查找求解。 在本题中二分查找的二段性体现在最小值左边的单调增最小值右边的单调增。且左边的元素都大于右边的元素。 2.如何解决分段单调的问题 很简单我们只需要比对arr[mid]与arr[0]和arr[numsSize - 1]的大小关系就可以 1.arr[mid] arr[0],说明mid此时落在最小值左边 2.arr[mid] arr[numsSize - 1]说明此时mid落在最小值的右边。 根据这一特性我们利用左闭右开型的二分查找就可以压缩出最小值所在的地方。 到此我们可以写下这样的一段代码 int minNumberInRotateArray(int* arr, int arrSize) {int left 0;int right arrSize - 1;while(left right){int mid (left right) / 2;if(arr[mid] arr[0]){left mid 1;}else{right mid;}}return arr[left]; } 3.上面的写法发生错误,为什么呢 因为题目只是说到非降序所以不能排除出现重复的情况 4.如何解决重复的问题? 我们重点对数据的右边进行去重 1.如果发生arr[mid] arr[right],则和上面一样使得right mid。 2.如果发生arr[mid] arr[right],则和上面一样使得left mid 1。 3.如果发生arr[mid] arr[right],则说明发生重复对于重复我们将right–因为既然有重复那删掉其中一个可以保证至少还有1个。 这样不断删之后可以排除重复的影响最终的代码如下: 代码实现 int minNumberInRotateArray(int* arr, int arrSize) {int left 0;int right arrSize - 1;while(left right){int mid (left right) / 2;if(arr[mid] arr[right])right mid;else if(arr[mid] arr[right])left mid 1;elseright - 1;}return arr[left]; } 结果情况 调整过后的代码符合题目要求,题目得到解决. 总结 今天的两道编程题整体来说难度不大。只不过有个新颖的点在于第二道题用到了二分查找。通过不断改进我们的思路一步一步完善最后将问题解决。 文章到这里就要告一段落了有更好的想法或问题欢迎评论区留言。 希望今天的练习能对您有所收获咱们下期见
http://www.dnsts.com.cn/news/67975.html

相关文章:

  • 关于网站建设与维护的参考文献金华网络推广公司
  • 中卫网站设计在哪里wordpress编辑页面加载慢
  • 中国网站备案信息查询个人搭建网站要多少钱
  • 网站对应的ip地址吗论坛网站开发语言
  • 网站数据库搬家wordpress百万文章秒开
  • 软件营销网站尚海整装为啥口碑那么差
  • 深圳做棋牌网站建设哪家便宜怎么做锅炉网站
  • 重庆旗帜制作网站首页布局seo
  • 搜索引擎如何找到网站深圳建筑公司招聘信息
  • 网站制作公司去哪找wifi优化大师下载
  • 品牌网站建设公司推荐网页制作教程答案
  • wix做的网站在国内访问不阳江房产网查询系统
  • 三河做网站甘肃省住房和城乡建设厅官方网站
  • 网站开发作业总结wordpress访问源端口号
  • 优秀的手机网站案例分析网站建设的创新之处
  • 杭州网站优化排名网站推广seo是什么
  • 网站申请要多少钱乐清建设网站公司
  • 重庆集团公司网站建设网络商城推广方案
  • 小米网站建设快速建站学什么
  • top域名的网站打不开seo服务公司推荐
  • 肇庆网站建设方案电商网站建设多少钱
  • 做网站前端后端ui什么意思企业网站建设规划的基本原则有哪些
  • 长沙哪里有网站推广优化网站开发外包价格
  • 做智能网站南京建设个人网站
  • 德州网站制作公司云星穹铁道网页版入口
  • 新手如何学网站建设wordpress 添加菜单
  • 手机版官方网站的建设朔州网站建设电话
  • 安卓端网站开发ide网站备案流程多少钱
  • 网站整合建设是啥意思网站开发都用php
  • 用excel 做网站徐州网上阳光招生平台