A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李知伦 中级黑马   /  2012-8-11 00:36  /  1721 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前看到一个题目,想到一种算法,但是没成功(求和的时候)
我描述一下大概,接受用户输入n个正整数,从中取x个的数相乘(不能重复取,但是值可以相同),取尽所有可能的组合,并把积相加.就是类似我们学的排列组合
用递归方法实现

2 个回复

倒序浏览
import java.io.*;

public class Test1 {

public static void main(String[] args) {
   select(2);
}
  
private static void select(int k) {
   char[] result = new char[k];
   subselect(0, 1, result, k);

}
  
private static void subselect(int head, int index, char[] r, int k) {
     for (int i = head; i < a.length + index - k; i++) {
     if (index < k) {
     r[index - 1] = a;
     System.out.println("i="+(i)+";index="+(index));
     subselect(i + 1, index + 1, r, k);
    }
    else if (index == k) {
       r[index - 1] = a;
       System.out.println(";i="+(i)+";index="+(index)+";index==k:"+(index==k));
       System.out.print(i+"===");
      System.out.println(r);
      subselect(i + 1, index + 1, r, k);
    } else {
     System.out.println("++");
     return;
    }

   }
}

private static char[] a = { 'a', 'b', 'c' };
}      // 我收藏的代码  比较难以理解   你看着吸收吧   呵呵




回复 使用道具 举报
LS的我有了,只能实现字符的排列组合
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马