11/10笔记

1.cin.peek()函数         char ch=cin.peek(),从输入流中看第一个输入的东西,且不拿走。这个是有用的呀,可以对付好多题目。

  还有 cin.get() 取走输入流里的第一个,不返回给谁。

2.递归:类似求表达式的递归是分层的,最外面是加减项,项里面有乘除因子,因子分为数和括号,而括号里面是项,以此为递归。而这在题目中是没有告诉我的,题目只说要用程序计算表达式,这又说明对题目的分析要透彻。

3.判断两个浮点数相等,不能用“==”,因为……一些原因,要这样:(a和b相同)

  #define EPS 1e-6

  bool iso(double x){

    return( fabs(x)<=EPS);

  }

  if ( iso ( a - b ) ) {         }

4.多个数字的递归问题,要机智的使用数组,不但把要处理的数放进数组,还要把你处理的一个数在放回数组,然后再递归处理数组。

5.二分查找:处理区间端点的技巧,L=0或者mid+1,R=size-1或者mid-1;找不到的结束临界是L>R;

    取L和R的中点时用mid=L+(R-L)/2;  防止(L+R)/2时L+R过大;

6.计算数组中有多少个元素: int size= sizeof(a)/sizeof(int)    //a是数组;

 7.动态规划:状态空间(多维数组)+状态转移方程(已知推未知)

  要使用dp,1>要求的是问题的最优解问题,且问题的最优解同时是子问题的最优解。

        2>无后效性,只和当前状态值有关,和当前状态值是如何取得的无关。

posted @ 2018-11-12 09:08  子洋_233  阅读(95)  评论(0编辑  收藏  举报