Java的排列组合问题
问题:现在有A[n],B[n]两个数组。需要计算不同组合C(n,k)情况下的数组A选中元素的乘积chengjiA与数组B选中元素的加和jiaheB的乘积x即x=cheng...
问题:现在有A[n],B[n]两个数组。需要计算不同组合C(n,k)情况下的 数组A选中元素的乘积chengjiA与数组B选中元素的加和jiaheB的乘积x 即x=chengjiA*jiaheB;当然x是C(n,k)一种情况的计算结果,还需要把所有组合情况的所得x相加,即x+=x。
作为新手,这个问题有点难,但是由于需要JAVA编写,拜托大神了~~~ 展开
作为新手,这个问题有点难,但是由于需要JAVA编写,拜托大神了~~~ 展开
3个回答
展开全部
package com;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class Kyo
{
public static void recursionSub(LinkedList<int[]> list, int count, int[] array, int ind,
int start, int... indexs)
{
start++;
if(start > count - 1)
{
return;
}
if(start == 0)
{
indexs = new int[array.length];
}
for(indexs[start] = ind; indexs[start] < array.length; indexs[start]++)
{
recursionSub(list, count, array, indexs[start] + 1, start, indexs);
if(start == count - 1)
{
int[] temp = new int[count];
for(int i = count - 1; i >= 0; i--)
{
temp[start - i] = array[indexs[start - i]];
}
list.add(temp);
}
}
}
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("输入n的值: ");
int n = scanner.nextInt();
int[] A = new int[n];
int[] B = new int[n];
System.out.println("输入A数组的值: ");
for(int i = 0; i < n; i++)
{
A[i] = scanner.nextInt();
}
System.out.println("输入B数组的值: ");
for(int i = 0; i < n; i++)
{
B[i] = scanner.nextInt();
}
System.out.println("A: " + Arrays.toString(A));
System.out.println("B: " + Arrays.toString(B));
System.out.println("输入k的值: ");
int k = scanner.nextInt();
scanner.close();
LinkedList<int[]> listA = new LinkedList<int[]>();
recursionSub(listA, k, A, 0, -1);
LinkedList<int[]> listB = new LinkedList<int[]>();
recursionSub(listB, k, B, 0, -1);
int result = 0;
String tmp = "", bnp = "";
for(int i = 0; i < listA.size(); i++)
{
int[] as = listA.get(i);
int[] bs = listB.get(i);
int sum = 0;
for(int j = 0; j < as.length; j++)
{
sum += as[j];
}
int mul = 1;
for(int j = 0; j < bs.length; j++)
{
mul *= bs[j];
}
int w = sum * mul;
result += w;
String y = "x" + (i + 1);
System.out.println(y + " = " + w);
tmp += y;
bnp += w;
if(i == listA.size() - 1)
{
System.out.println("∑x" + " = " + tmp + " = " + bnp + " = " + result);
}
else
{
tmp += " + ";
bnp += " + ";
}
}
}
}
展开全部
int count=0;
int[] a={1,3,5,7,9};
int[] b={2,4,6,8};
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
count+=a[i]*b[j];
System.out.println(a[i]+"*"+b[j]+"="+a[i]*b[j]);
}
}
System.out.println(count);
不知道是不是这个意思,希望有帮到
int[] a={1,3,5,7,9};
int[] b={2,4,6,8};
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
count+=a[i]*b[j];
System.out.println(a[i]+"*"+b[j]+"="+a[i]*b[j]);
}
}
System.out.println(count);
不知道是不是这个意思,希望有帮到
追问
谢谢,但不是这个意思
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-10-09
展开全部
不明白要做什么?
能否写清楚点。
能否写清楚点。
追问
已经补充
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询