微软100题-天天做-第32题
来源:互联网 发布:js访问者模式 编辑:程序博客网 时间:2024/06/05 16:23
32.(数组、规划)
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
例如:
var a=[100,99,98,1,2, 3];
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
例如:
var a=[100,99,98,1,2, 3];
var b=[1, 2, 3, 4,5,40];
package com.microsoft;import java.util.ArrayList;import java.util.List;public class MiniSub {private List<Integer> a=new ArrayList<Integer>();private List<Integer> b=new ArrayList<Integer>();private List<Integer>data=new ArrayList<Integer>();private List<Integer>resultA=new ArrayList<Integer>();private List<Integer> resultB=new ArrayList<Integer>();private int miniSum=Integer.MIN_VALUE;private int sizeA;private int sizeB;public MiniSub(int []a,int[]b){int i=0;for(;i<a.length;i++){data.add(a[i]);}for(int j=0;j<b.length;j++){data.add(b[j]);}sizeA=a.length;sizeB=b.length;}public void choose(){int i=0;for( i=0;i<sizeA;i++){a.add(data.get(i));}for(int j=0;j<sizeB;j++){b.add(data.get(i+j));}exchange(1);}public void exchange(int num){sub();Math.min(a.size(), b.size());for(int l=0;l<a.size();l++){for(int m=0;m<b.size();m++){int tmpA=a.remove(l);a.add(l,b.remove(m));b.add(m, tmpA);sub();}}for(int l=0;l<b.size();l++){for(int m=0;m<a.size();m++){int tmpB=b.remove(l);b.add(l,a.remove(m));a.add(m, tmpB);sub();}}}public void sub(){int sum=0;for(int k=0;k<a.size();k++){sum+=a.get(k);}for(int k=0;k<b.size();k++){sum-=b.get(k);}sum=Math.abs(sum);if(miniSum==Integer.MIN_VALUE){while(!resultA.isEmpty()){resultA.remove(resultA.size()-1);}for(int i=0;i<a.size();i++){resultA.add(a.get(i));}while(!resultB.isEmpty()){resultB.remove(resultB.size()-1);}for(int i=0;i<b.size();i++){resultB.add(b.get(i));}miniSum=sum;print();}else{if(miniSum>sum){miniSum=sum;while(!resultA.isEmpty()){resultA.remove(resultA.size()-1);}for(int i=0;i<a.size();i++){resultA.add(a.get(i));}while(!resultB.isEmpty()){resultB.remove(resultB.size()-1);}for(int i=0;i<b.size();i++){resultB.add(b.get(i));}print();}}}public void print(){for(int i=0;i<resultA.size();i++){System.out.print(resultA.get(i)+" ");}System.out.println();for(int i=0;i<resultB.size();i++){System.out.print(resultB.get(i)+ " ");}System.out.println();}public static void main(String[] args) {int []a=new int[]{1,2,98,1,2,3};int []b=new int[]{100,40,3,4,5,99};MiniSub mini=new MiniSub(a,b);mini.choose();mini.print();}}
0 0
- 微软100题-天天做-第32题
- 微软面试100题-天天做-第5题
- 微软面试100题-天天做-第6题
- 微软100题-天天做-第7题
- 微软100题-天天做-第8题
- 微软100题-天天做-第9题
- 微软100题-天天做-第10题
- 微软100题-天天做-第11题
- 微软100题-天天做-第12题
- 微软100题-天天做-第13题
- 微软100题-天天做-第14题
- 微软100题-天天做-第15题
- 微软100题-天天做-第16题
- 微软100题-天天做-第17题
- 微软100题-天天做-第18题
- 微软100题-天天做-第19题
- 微软100题-天天做-第20题
- 微软100题-天天做-第21题
- 编码基本知识
- 软件经济学五:创建高效率的团队
- 如果需要统一设置编码
- flume学习
- python dict reg key
- 微软100题-天天做-第32题
- java!
- mysql笔记-- mysql命令札记8 --MySql 数据表类型
- JAVA设计模式之策略模式(2)商场打折
- 2014_3_29_周赛 马腿上的最短路
- ThinkpadX200 空只电池充电阀值
- NOIP2000计算器的改良
- 2014_3_29_周赛 倒水
- 001_<ARM9从裸机到Linux操作系统>____裸机篇____ARM9裸机程序开发环境搭建