• Java实现 蓝桥杯 算法提高 数组求和


    试题 算法提高 数组求和

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少?
    输入格式
      输入的第一行包含两个整数n, m。第二行,共n个整数。
    输出格式
      输出1行,包含一个整数,连续m个数之和的最大值。
    样例输入
    10 3
    9 10 1 5 9 3 2 6 7 4
    样例输出
    23
    数据规模和约定
      0<m<n<1000, -32768<=输入的每个数<=32767。

    PS:
    方法就是把数组的前m个放在正常数组的后面

    第一个好理解 第二个代码量少

     
    
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
    
            int [] num = new int [n+m];
            for (int i=0;i<n;i++){
                num[i]=sc.nextInt();
            }
            sc.close();
    
            for (int i=n;i<n+m;i++){
                num[i]=num[i-n];
            }
    //        for (int i=0;i<num.length;i++){
    //            System.out.print(num[i]+" ");
    //        }
            int max = 0,sum=0;
            for (int i=0;i<m;i++)
                sum+=num[i];
            for (int i=m;i<m+n;i++){
               sum=    sum-num[i-m]+num[i] ;
                max=Math.max(max,sum);
            }
            System.out.println(max);
    
        }
    }
    
    
     
    
    import java.util.Scanner;
    
    public class 数组求和 {
        public static void main(String[] args) {
            int max = 0,sum=0,n,m,i;
            int [] num;
            Scanner sc = new Scanner(System.in);
              n = sc.nextInt();
              m = sc.nextInt();
        //建立m+n的数组就是为了把首尾连接的情况
            // 把最开头的m个放在后面,省去了链表的复杂
            num = new int [n+m];
            for (  i=0;i<m;i++){
                num[i]=sc.nextInt();
                sum+=num[i];
            }
     
            for (  i=m;i<m+n;i++){
                num[i]=i<n?sc.nextInt():num[i-n];//n以内就是输入的,n以后就是数组的前m
                sum=  sum-num[i-m]+num[i] ;//减去m列表内的第一项,加上当前项
                max=Math.max(max,sum);
            }
            sc.close();
            System.out.println(max);
     
        }
    }
    
    
  • 相关阅读:
    Node.js REPL(交互式解释器)
    Node.js NPM 使用介绍
    Node.js 创建第一个应用
    Node.js 安装配置
    Node.js 教程
    Go语言-通道类型
    golang 线程与通道
    Go 语言 goto 语句
    Go 语言指向指针的指针
    session效率
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075510.html
Copyright © 2020-2023  润新知