有字符串数组String[] ar = { "1", "2", "3", "4", "5" }。
1、任意选出三个数,写出所有可能的组合(不可重复,三个数之间也不可重复)。
2、写出一共有多少个组合。
1、任意选出三个数,写出所有可能的组合(不可重复,三个数之间也不可重复)。
2、写出一共有多少个组合。
解决方案 »
- 64位linux firefox jre插件
- JavaGUI的有关问题,跪求解答
- 几个问题啊?关于多线程!有源码
- TextArea的方法getMinimumSize有什么用,dimension中文是什么意思啊
- 我用JCreator写了若干个类,可不知怎样把它们组装成一个可执行的应用程序!请高手指点!
- 初学JAVA人的担忧!?
- 怎样全局设置窗口中所以组件的字体?
- 请问jb7怎么注册的??
- IE6无法显示Applet,AppletViewer中可正常显示,亦安装了Java Plug In,不知是何原因
- 程序员看“永中Office” ---请大家来讨论这个java开发的国产office工具
- 如何测试两台计算机的网络联结是否存在 稳定?
- 自认为是比较变态的逻辑题。看看你们晕了吗?
组合的个数是
数组长度 - 一个组合包含多少数
的差 加上1 然后递减
最后将 所以数字循环加起来(递归也行)
例如
有字符串数组String[] ar = { "1", "2", "3", "4", "5" }。
x =(5 - 3 + 1)
y += x
x--当然你用循环遍历所以可能的组合
每次出现符合的组合就打印出来
并且写一个计数器
也行
import java.util.*;public class TestGroup { /**
* @param args
*/
public HashSet group(String[] ar){
HashSet<String> set=new HashSet<String>();
for(int i=0;i<ar.length;i++){
for(int j=0;j<ar.length;j++){
for(int k=0;k<ar.length;k++){
if(ar[i]==ar[j]&&ar[j]==ar[k])//如果三个数一样就不存进去.
continue;
else
set.add(ar[i]+ar[j]+ar[k]);
}
}
}
return set;
}
public static void main(String[] args) {
String[] ar=new String[]{"1","2","3","4","5"};
HashSet<String> set=new HashSet<String>();
TestGroup test=new TestGroup();
set=test.group(ar);
System.out.println(set.size());
Iterator it=set.iterator();
while(it.hasNext()){
System.out.print(it.next()+" ");
}
System.out.println("一共有"+set.size()+"个组合");
}}