zoukankan      html  css  js  c++  java
  • G

    2017-07-17 11:56:06 

    • writer:pprp
    • 题目描述
      大家都知道,锘爷是XDUdp第一人,所以锘爷决定要去考驾照!(这很有逻辑吧),他为了一次考到驾照,于是买了一辆越野车从学校开回家来练习开车,在途中就会有很多高山和低谷(低谷可能比地平面低)。经过一段时间的调查,现在他已经知道了最短的路线,我们假设这是一条直线,并且他一定会走这条直线。但是这也太远了,锘爷想找一段开车的时间打瞌睡,为了更舒服的打瞌睡,于是锘爷统计了这条路线上所有的山峰和谷底的高度,他想知道长度为length的路上高度之和最小的一段是多少?
      输入
      多组数据(不超过50组),处理到文件结束。
      对于每组数据,读入一个整数n,length(1<=length<=n<=200000)n表示山峰和低谷数,length表示诺爷打瞌睡的长度。
      接下来是n个整数h(i),表示高度,abs(h(i))<=200000。
      输出
      对于每组数据,输出一个整数表示长度为length高度和的最小值。
      样例输入
      3 2 1 2 3 5 3 1 -1 -1 2 -5
      样例输出
      3 -4
    •  
      代码如下:
    •  
      #include <iostream>
      #include <cstdio>
      #include <algorithm>
      
      using namespace std;
      
      int main()
      {
          int MIN;
          int n, length;
      
          while(~scanf("%d%d",&n,&length))
          {
              int sum = 0;
              int  * record = new int[n-length+1];
              int  * num = new int[n];
              for(int i= 0  ; i <n ; i ++)
              {
                  scanf("%d",&num[i]);
              }
              for(int i = 0 ; i < length ; i++)
                  sum +=num[i];
      
              MIN   = sum;
      
             for(int head = 0,tail = length;tail < n; head++,tail++)
             {
                   sum -= num[head];
                   sum += num[tail];
                   if(sum < MIN)
                        MIN = sum;
             }
              cout <<MIN <<endl;
              delete num;
              delete record;
          }
         return 0;
      }

      错误原因:

    • new用法掌握不牢;
      int * num = new int[n];
      不是
      int * num = new int (n);
       
  • 相关阅读:
    关于git修改和查看用户名邮箱
    Spring深入理解(三)
    Spring深入理解(二)
    Spring深入理解(一)
    jeecg开源快速开发
    关于面向对象的三大特性和五大基本原则
    关于Excel导入导出POI工具类
    关于Hanoi算法
    LOJ 530 最小倍数(数论)
    BZOJ 4242 水壶(BFS建图+最小生成树+树上倍增)
  • 原文地址:https://www.cnblogs.com/pprp/p/7193609.html
Copyright © 2011-2022 走看看