题目是这样的
比如有这样一个数组:{a, b, c}
要求输出这样的结果a, b, c, ab, ac, ba, bc, ca, cb, abc, acb, bac, bca, cab, cba
大侠们帮帮忙啊
比如有这样一个数组:{a, b, c}
要求输出这样的结果a, b, c, ab, ac, ba, bc, ca, cb, abc, acb, bac, bca, cab, cba
大侠们帮帮忙啊
调试欢乐多
for(int first=0;first<=len;first++)
for(int second=0;second<=len;second++)
if(a[first]!=a[second])
{
string temp=string(a[first])+ string(a[second]);
result[i]=temp;
}大致是这样,2层循环,判断不相等后把2个值转正字符串,再拼接到一起,把结果传到结果数组result中
我的代码不太好,很死板,很机械的代码:
public class ex1
{ public static void main(String[] args)
{
String [] a=new String []{"a","b","c"};
String [] result = new String[100];
int first,second,third,len=2,i=0;
for(first=0;first<=len;first++)
{
result[i]=a[first];
System.out.print(result[i]+" ");
i++;
for( second=0;second<=len;second++)
if(a[first]!=a[second])
{
String temp=a[first]+ a[second];
result[i]=temp;
System.out.print(result[i]+" ");
i++;
for(third=0;third<=len;third++)
{
if(a[first]!=a[second]&&a[second]!=a[third]&&a[first]!=a[third])
{
String temp1=a[first]+ a[second]+a[third];
result[i]=temp1;
System.out.print(result[i]+" ");
i++;
}
}
}
}
}
}有没有哪位大虾能给段更好的代码参考参考啊,我也学习学习
import java.util.*;public class Arrange{ private int[] index;//用于存储需要全排列的数组的下标的成员变量。
private int n;//表示待排数组的元素个数。
private long numLeft;//用于存储剩余排列序列个数的成员变量。
private long total;//用于存储排列序列总数的成员变量。
public Arrange(int n){
this.n=n;
reset();//调用重置
}
public void reset(){
//初始化数组index。
index=new int[n];
for(int i = 0; i < index.length; i++){
index[i] = i;
}
//初始化numLeft,开始时numLeft应该为n!.
total=1;
for(int i = n;i>1;i--){
total*=i;
}
numLeft=total;
} //判断是否排序结束
public boolean hasMore(){
return numLeft > 0;
}
//得到下一个排列序列
public int[] getNext(){ if (numLeft==total){
numLeft -=1;
return index;
} int j = index.length - 2;
while (index[j] > index[j + 1]){
j--;
} int k = index.length - 1;
while (index[j] > index[k]){
k--;
}
int temp;
temp = index[k];
index[k] = index[j];
index[j] = temp; int r = index.length - 1;
int s = j + 1; while (r > s){
temp = index[s];
index[s] = index[r];
index[r] = temp;
r--;
s++;
} numLeft-=1;
return index; }
}
下面的是测试这个方法public class TryArrange{
public static void main(String args[]){
System.out.println("对整数数组进行全排列");
int[] intArray=new int[3];
for(int i=0;i<intArray.length;i++){
intArray[i]=i+1;
}
Arrange intArrange=new Arrange(intArray.length);
while(intArrange.hasMore()){
int[] index=intArrange.getNext();
for(int i=0;i<intArray.length;i++){
System.out.print(intArray[index[i]]+" ");
}
System.out.println();
}
System.out.println("对字符数组进行全排列");
String str="abc";
char[] chArray=str.toCharArray();
Arrange strArrange=new Arrange(chArray.length);
while(strArrange.hasMore()){
int[] index=strArrange.getNext();
for(int i=0;i<chArray.length;i++){
System.out.print(chArray[index[i]]+" ");
}
System.out.println();
}
}
}
花时间帮你找地 多少给点分吗 嘿嘿
TreeSet<String> ts = new TreeSet<String>();
Random r = new Random(47);
int total = 1;
for(int a = c.length;a>=c.length-len;a--){
total *= a;
}
while(total > 0){
String s = new String();
for(int i = len;i>=0;i--){
do{
int k = r.nextInt(c.length);
if(!s.contains(c[k])){
s += c[k];
break;
}
}while(true);
}
if(!ts.contains(s)){
ts.add(s);
total --;
}
}
return ts;
}
public static void main(String [] arg){
String[] c= {"a","b","c"};
int len = c.length;
for(int i = 0; i<len;i++){
TreeSet<String> treeSet = add(c,i);
for(String st:treeSet){
if(i!=len-1 || st!=treeSet.last()){
System.out.print(st+",");
}else{
System.out.print(st);
}
}
}
}
}
数组元素个数不限(要求不同的元素,否则..)...:-)