soe标题打开直接显示网站怎么做,wordpress主题tstyle,crm网页版,广东省54个市题干
我人比较蠢想不出好的解决方案#xff0c;只能采用暴力破解才能维持的了生活这样。。资源限制 时间限制#xff1a;1.0s 内存限制#xff1a;256.0MB 问题描述
输入n个数#xff0c;围成一圈#xff0c;求连续m#xff08;mn#xff09;个数的和最大为多少只能采用暴力破解才能维持的了生活这样。。资源限制 时间限制1.0s 内存限制256.0MB 问题描述
输入n个数围成一圈求连续mmn个数的和最大为多少输入格式
输入的第一行包含两个整数n, m。第二行共n个整数。输出格式
输出1行包含一个整数连续m个数之和的最大值。样例输入
10 3
9 10 1 5 9 3 2 6 7 4样例输出
23数据规模和约定
0mn1000, -32768输入的每个数32767。思路
使用循环链表
代码
import java.util.Scanner;/*** 输入n个数围成一圈求连续mmn个数的和最大为多少* n m* n个数*/public class Main {static int max0; /**链表**/static class Node{int data;Node next;public Node(int data){this.datadata;}public Node(){}}/**链表初始化**/static public Node Init(Node head,int data){Node p new Node();Node hhead;p.datadata;p.nextnull;while(h.next!null){hh.next;}h.nextp;return head;}/**核心代码**/static public Node add(Node head,int m,int max1){int tepsum0;Node phead.next;//特别这边要注意 每次节点只往后移一位 所以先保存for(int i0;im;i){tepsumhead.data;headhead.next;}maxmax1tepsum?max1:tepsum;//每次保存最大的值赋给maxreturn p;}public static void main(String[] args) {final Scanner scanner new Scanner(System.in);int nscanner.nextInt();int mscanner.nextInt();Node head new Node(scanner.nextInt());for(int i0;in-1;i){int ascanner.nextInt();head Init(head, a);}Node phead;while (p.next!null){pp.next;}p.nexthead;/**构建循环链表**/Node qhead;for(int i0;in;i){headadd(head,m,max);}System.out.println(max);}
}
其实也可以用数组来解决这道题目我写完暴力方法后想到好像只需要在最后一个元素后面补充m个元素就好了补充的元素就是第1个到第m个。最后再按照下面的方法来解决
//b数组就是原来是数据
int[] anew int[nm-1];
for(int i0;in;i){a[i]b[i];
}
for(int i0;im;i){a[ni]b[i];
}
int max-999999;
for(int i0;in;i){for(int j0;jm;j){suma[ij];}if(maxsum) maxsum;
}
System.out.println(max);大致就是上面这样我也没试过就是想到了。不过肯定是可以的。