码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++编程基础算法总结

时间:2017-08-03 20:16:44      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:整数   字符   算法   最大   日期   好的   运算   内存   区间问题   

使用王道机试指南的电子书也有几天的时间了,终于看完了第二章《经典入门》,下面就来总结回顾一下最常见的六种算法/问题,为下一步刷题打好坚实基础。

套路是:先概述这种题型,然后总结我学到的和易错点。

************************************题目都是九度OJ上的**********************************************

先提一句!时间复杂度!王道一直在提这一点,必须有根据题目中变量的范围来估算时间复杂度的意识。

一、排序问题

  • 基本的冒泡、选择排序自不必说,必须掌握。
  • C语言的qsort,C++的sort,我都是第一次知道。。
  • sort的两种使用方法,要么重载<运算符,要么自己写cmp函数,总之就是让sort函数知道比较规则是什么。cmp函数的写法,比如降序排列,第一个参数比第二个参数大时返回true就好。
  • 1061题,结构体排序,也没啥,还是用sort,可在结构体里面定义重载运算符,即规则定义在里面。也可在外面写cmp函数。注意重载的写法。
  • 1185题特殊排序,其实很简单,如果逆向思维的话:先排序,自然最大的就出来了,而且题目没说清删一个还是全删,我刚开始全删了,一直WA,结果根本没那么复杂。。。删一个就行。
  • 1023,自己写的代码总是RE,至今未明。但大概知道,比较规则应写的简洁明晰,不要太长更不要跟全局变量什么的扯上关系。。我目前只能这么理解了,说的不对的话欢迎大神给我指出错误

二、日期类问题

  • 重要的思想:预处理。解决区间类问题的统一思想:把原区间问题统一到固定起点的区间问题上去
  • 1096,第一次接触类编程。可以用struct定义类,类里有一个成员函数,即一个方法。大内存数组定义成全局变量。
  • 1043,注意取余运算的应用。

三、Hash

  • 适用的类型:某变量范围有限、固定、有特点。1431大范围整数排序、1156根据读书判断潜在朋友、1088拔树 这些问题都适合Hash

四、排版题

两类,一种是简单排版,即几何规律与输出顺序有联系。另一类难一点,没联系,要先排版再输出。1161题Repeater,简直虐心。。关键是找到规律,迭代时候注意分不同情况,不要有冲突

五、查找

  • 线性查找:遍历,简单
  • 二分查找:先用sort变成有序数组,再查找。复杂度会从n变log。典型条件:while(a<=b)

六、贪心算法

思想很简单,就是总获取最好的。(最符合目标要求的)但是有时候不容易找到合适的贪心策略

  • 1433,硕鼠换粮题,抽象成为一个以性价比为贪心标准的问题。即:总是优先买性价比最高的商品,直到金钱花完或者这种物品被买完,那就换性价比次高的,以此类推
  • 1434的今年暑假不AC,目标是尽可能多的看到完整的节目,那么贪心的标准是以结束时间最早的节目优先,因为这样总是能节约时间以增大更多的节目机会被看的可能性。1435的迷瘴,1436的修墙的贪心标准比较明显。

贪心算法中,while循环的判断条件要仔细斟酌,明确要输出几个变量,有几个变量作为辅助,初始条件是什么,循环过程中会怎么样变化等等。

七、我的常见错误

  • 最坑爹的肯定是scanf()函数,首先它是有返回值哒,返回成功读取变量的个数;传入变量地址虽然很小儿科,但为了不忘记再说一句。。格式控制字符串中的一个空格可以抵消输入中的n个空格,6不6.尤其注意输入字符格式的时候,注意空格属不属于待输入字符之内(排版题)属于的话格式控制字符串中不能加空格;要不要用getchar()吸收。。注意回车符也是需要吸收的,尤其排版题要注意。。。
  • 常见WA的原因
  1. 标志位!标志位!计数器!计数器!是不是没清零!!?!我最爱犯的错误,没有之一。甚至有时莫名其妙的话你就应该想到看看标志位清没清,试着清一下。。。
  2. 算法是否有错
  3. 边界数据是否有错
  4. 是不是多组测试用例你只按一组编的
  5. 是不是某变量/数组声明位置不对,导致第一次用完之后历史数据没清除,本质跟1一样。所以变量随用随定义。

以上就是一周以来的学习总结。想要进一步强化编程,以上基础必须打牢。

C/C++编程基础算法总结

标签:整数   字符   算法   最大   日期   好的   运算   内存   区间问题   

原文地址:http://www.cnblogs.com/cjf1699-dut/p/7281256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!