当前位置: 代码迷 >> J2SE >> 一道JAVA笔试题,非常难,能不帮小弟我?
  详细解决方案

一道JAVA笔试题,非常难,能不帮小弟我?

热度:10   发布时间:2016-04-24 13:58:58.0
一道JAVA笔试题,非常难,各位大哥能不帮我??
int   a[]=new   int{2,6,7,5};
首先把这个数组从小到大的顺序排序
然后对这个数组进行全排列
比如:
2567,2576,2657,2675,2756,2765,
5267,5276,5627,5672,5726,5762,
6257,6275,6527,6572,6725,6752,
7256,7265,7526,7562,7625,7652
  输出这四个数所有能排列出的可能性

------解决方案--------------------
思路,重申一遍,思路!

你不妨这样思考,把数组元素都看成一个一个的string,于是数字的组合就是这样的。

a[0]a[1]a[2]a[3]

依此类推,不就都出来了?

第一位是a[0],后面是a[1],后面两位的组成随意,于是有两种。

其他情况依此而推,一样的。
------解决方案--------------------
‘0000’--‘9999’ 包含四个字符的就可以 复杂度是10000次
------解决方案--------------------
google: java permutation
------解决方案--------------------
小狼的那个怎么感觉像是手动排列啊?

------解决方案--------------------
http://www.merriampark.com/perm.htm
------解决方案--------------------
定义4个变量分别表示,千位数,百位数,十位数,个位数,用4重循环如for(int i=2;i <=7;i++),然后判断这4个数的和是否等于20,如果是就输出.
------解决方案--------------------
还是我厉害 帮你解决了 呵呵
执行过了没问题 去买饭等了半天就有思路了:)

public class Test{
public static void main(String[] args){
int a[]={1,2,3,4};
for(int i=0;i <4;i++){
for(int j=0;j <4;j++){
if(j==i)continue;
for(int k=0;k <4;k++){
if(k==i||k==j)continue;
System.out.print(a[i]*1000+a[j]*100+a[k]*10+a[6-i-j-k]);
System.out.print( " ");
}
}
System.out.println();
}
}
}

D:\javaLX> java Test
1234 1243 1324 1342 1423 1432
2134 2143 2314 2341 2413 2431
3124 3142 3214 3241 3412 3421
4123 4132 4213 4231 4312 4321
------解决方案--------------------
图的连通问题
------解决方案--------------------
顶 淡淡的感觉.cool.
------解决方案--------------------
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Enumeration;
import java.util.HashSet;

public class TestString{
public static void main(String[] args){
Hashtable ht = new Hashtable();
int num1 = 0;
int num2 = 0;
int num3 = 1;
int num4 = 0;
int num5 = 0;
String str = "1233 ";

//存放 0 - 9 各个出现的个数
int n[] = new int[10];

num2 = str.length();

//可能出现字符串的所有个数
for(;num2> 0;num2--){
num3 *= num2;
}

System.out.println(num3);
char[] ch = new char[str.length()];
str.getChars(0,str.length(),ch,0);
List list = new ArrayList();
for(int num=0;num <ch.length;num++){
list.add(new String(ch[num]+ " "));
}

//求出 0 - 9 各个出现的个数
for(int num=0;num <list.size();num++){
int index = Integer.parseInt(list.get(num).toString());
n[index]++;
}


num5 = jieCheng(n);

//num3为没有重复数字的字符串个数
num3 = num3/num5;

System.out.println(num3);


while(num4 <num3){
Collections.shuffle(list);
Iterator it = list.iterator();
StringBuffer sb = new StringBuffer( " ");
  相关解决方案