加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
test.java 2.62 KB
一键复制 编辑 原始数据 按行查看 历史
xiao七 提交于 2019-09-04 20:45 . 第三题
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
int [] o=new int[n];
for(int i=0;i<n;i++){
o[i]=sc.nextInt();
}
int [] s=new int[m];
int [] sum=new int[m];
for(int i=0;i<m;i++){
if(i<m-1){
s[i]=1;
sum[i]=o[i];
}
}
sum[m-1]=0;
s[m-1]=n-m+1;
for(int i=m-1;i<n;i++){
sum[m-1]+=o[i];
}
spilt(sum,s,o);
}
public static void spilt(int [] sum,int [] s,int[] o){
List<Integer> list=new ArrayList<>();
int max=0;
int i=0;
while (i<10) {
list = max(sum);
max=list.get(1);
int index = list.get(0);
if (index == 0) {
sum[index] = sum[index] - o[s[index] - 1];
sum[index + 1] = sum[index + 1] + o[s[index] - 1];
s[index] -= 1;
s[index + 1] += 1;
} else if (index == sum.length - 1) {
sum[index] = sum[index] - o[o.length - s[index]];
sum[index - 1] = sum[index - 1] + o[o.length - s[index]];
s[index] -= 1;
s[index - 1] += 1;
} else {
if (sum[index - 1] < sum[index + 1]) {
sum[index] = sum[index] - o[sum1(s, index)];
sum[index - 1] = sum[index - 1] + o[sum1(s, index)];
s[index] -= 1;
s[index - 1] += 1;
} else {
sum[index] = sum[index] - o[sum1(s, index + 1) - 1];
sum[index + 1] = sum[index + 1] + o[sum1(s, index + 1) - 1];
s[index] -= 1;
s[index + 1] += 1;
}
}
i++;
}
System.out.println(max);
}
public static int sum1(int[] s,int index){
int sum=0;
for(int i=0;i<index;i++){
sum+=s[i];
}
return sum;
}
public static List<Integer> max(int[] sum){
List<Integer> list=new ArrayList<>();
int max=sum[0];
int index=0;
for(int i=1;i<sum.length;i++){
if(sum[i]>max){
max=sum[i];
index=i;
}
}
list.add(index);
list.add(max);
return list;
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化