
~~求解~~用动态规划算法求两数组各元素间差的最小值,JAVA代码或方法思路
~~求解~~用动态规划算法求两数组各元素间差的最小值,并要记录是哪两个元素之间相减的,多谢了,多给20财富值。...
~~求解~~用动态规划算法求两数组各元素间差的最小值,并要记录是哪两个元素之间相减的,多谢了,多给20财富值。
展开
3个回答
展开全部
import java.util.Arrays;
public class Test {
public static void getCha(int [] a,int []b){
int min =Integer.MAX_VALUE;
int sss=0;
int kkk = 0;
int c = 0;
int d = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
int temp = Math.abs(a[i]-b[j]);
if(temp<min){
min = temp;
sss = a[i];
kkk = b[j];
c=i;
d=j;
}
}
}
System.out.println("最大差距:"+min+"数组A["+c+"]"+sss+"数组B["+d+"]"+kkk);
}
public static void main(String[] args) {
int []a = new int[8];
int []b = new int[12];
for (int i = 0; i < a.length; i++) {
a[i] = (int)( Math.random()*100);
}
System.out.println(Arrays.toString(a));;
for (int i = 0; i < b.length; i++) {
b[i] = (int) (Math.random()*100);
}
System.out.println(Arrays.toString(b));
getCha(a,b);
}
}
public class Test {
public static void getCha(int [] a,int []b){
int min =Integer.MAX_VALUE;
int sss=0;
int kkk = 0;
int c = 0;
int d = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
int temp = Math.abs(a[i]-b[j]);
if(temp<min){
min = temp;
sss = a[i];
kkk = b[j];
c=i;
d=j;
}
}
}
System.out.println("最大差距:"+min+"数组A["+c+"]"+sss+"数组B["+d+"]"+kkk);
}
public static void main(String[] args) {
int []a = new int[8];
int []b = new int[12];
for (int i = 0; i < a.length; i++) {
a[i] = (int)( Math.random()*100);
}
System.out.println(Arrays.toString(a));;
for (int i = 0; i < b.length; i++) {
b[i] = (int) (Math.random()*100);
}
System.out.println(Arrays.toString(b));
getCha(a,b);
}
}
更多追问追答
追问
非常感谢你的耐心解答,希望你能再改一下,输入的两个数组是任意升序的,最后输出的是所有对应的(i, j)。字太多了,在评论里
追答
额 你好歹给点分啊 而且一开始你就应该说清楚 浪费我时间……如果是升序更简单 建议自己写 输出哪些过程更简单
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的思路就是遍历遍历第一个数组,第一个数组的每个元素和第二数组所有元素比较。会得出一个和第一个数组大小相同的数组,取里面最小值即可。如果有需要,可以给你写下代码。
追问
例如:数组A(20,30,50,100,140)和B(25,100,130,150),输出结果为:对应(0,0)差值5;对应(1,0)差值5;对应(2,0)差值25,;对应(3,1)差值0;对应(4,2)差值10;对应(4,3)差值10····就是说求两数组每两项的差值最小的。可以帮我写好么,谢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] temp1 = new int[]{1,3,5,7,9,11};
int[] temp2 = new int[]{2,6,2,3,1,5,4};
int[] result = new int[]{0,0,0};
for(int i = 0;i<temp1.length;i++){
for(int j = 0;j<temp2.length;j++){
int temp = temp1[i]-temp2[j];
if(temp>result[2]){
result[0] = temp1[i];
result[1] = temp2[j];
result[2] = temp;
}
}
}
System.out.println(result[0]+"-"+result[1]+"="+result[2]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] temp1 = new int[]{1,3,5,7,9,11};
int[] temp2 = new int[]{2,6,2,3,1,5,4};
int[] result = new int[]{0,0,0};
for(int i = 0;i<temp1.length;i++){
for(int j = 0;j<temp2.length;j++){
int temp = temp1[i]-temp2[j];
if(temp>result[2]){
result[0] = temp1[i];
result[1] = temp2[j];
result[2] = temp;
}
}
}
System.out.println(result[0]+"-"+result[1]+"="+result[2]);
}
}
追问
例如:数组A(20,30,50,100,140)和B(25,100,130,150),输出结果为:对应(0,0)差值5;对应(1,0)差值5;对应(2,0)差值25,;对应(3,1)差值0;对应(4,2)差值10;对应(4,3)差值10····就是说求两数组每两项的差值最小的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询