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编写,拜托大神了~~~
展开
 我来答
yugi111
2015-10-09 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.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 += " + ";
}
}
}
}
gusha1990
2015-10-09 · 超过24用户采纳过TA的回答
知道答主
回答量:39
采纳率:50%
帮助的人:21.5万
展开全部
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);

不知道是不是这个意思,希望有帮到
追问
谢谢,但不是这个意思
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-10-09
展开全部
不明白要做什么?
能否写清楚点。
追问
已经补充
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式