用java把1234各种排序都打印出来,如:1234,1243,1324,1342...(Hint:深度排序算法)。
面试时哪晓得深度什么子的,就直接用Arrays.asList返回的List的remove方法(当然,这是错的;Arrays.asList()返回的List是长度一定的,不能remove,抛出unsupportoperation异常)。上网看了看深度排序算法,终于实现了,现贴上,希望抛砖引玉,大家又什么更好的算法:public class Sorter {
public static void main(String[] args){
sort();
} public static void sort() {
StringBuffer str = new StringBuffer();
for(int i=0;i<4;i++) {
int[] intArrays = new int[]{1, 2, 3, 4};
str.append(intArrays[i]);
for(int j=0;j<3;j++) {
int[] secondArrays = getOthers(intArrays, intArrays[i]);
str.append(secondArrays[j]);
for(int k=0;k<2;k++) {
int[] thirdArrays =getOthers(secondArrays, secondArrays[j]);
str.append(thirdArrays[k]);
str.append(getOthers(thirdArrays, thirdArrays[k])[0]); //找到最深处,打印这种情况
System.out.println(str.toString());
//清除这种情况的操作,为新的情况准备
str.delete(2, 4);
} //清除这种情况的操作,为新的情况准备
str.delete(1, 2);
}
//清除这种情况的操作,为新的情况准备
str.delete(0, 1);
}
}
/*
*返回除了me元素的其他元素的数组
*/
public static int[] getOthers(int[] old, int me) {
int[] arrays = new int[old.length - 1];
int index = 0;
for(int i=0;i<old.length;i++) {
if(old[i] != me) {
arrays[index++] = old[i];
}
}
return arrays;
}
}
面试时哪晓得深度什么子的,就直接用Arrays.asList返回的List的remove方法(当然,这是错的;Arrays.asList()返回的List是长度一定的,不能remove,抛出unsupportoperation异常)。上网看了看深度排序算法,终于实现了,现贴上,希望抛砖引玉,大家又什么更好的算法:public class Sorter {
public static void main(String[] args){
sort();
} public static void sort() {
StringBuffer str = new StringBuffer();
for(int i=0;i<4;i++) {
int[] intArrays = new int[]{1, 2, 3, 4};
str.append(intArrays[i]);
for(int j=0;j<3;j++) {
int[] secondArrays = getOthers(intArrays, intArrays[i]);
str.append(secondArrays[j]);
for(int k=0;k<2;k++) {
int[] thirdArrays =getOthers(secondArrays, secondArrays[j]);
str.append(thirdArrays[k]);
str.append(getOthers(thirdArrays, thirdArrays[k])[0]); //找到最深处,打印这种情况
System.out.println(str.toString());
//清除这种情况的操作,为新的情况准备
str.delete(2, 4);
} //清除这种情况的操作,为新的情况准备
str.delete(1, 2);
}
//清除这种情况的操作,为新的情况准备
str.delete(0, 1);
}
}
/*
*返回除了me元素的其他元素的数组
*/
public static int[] getOthers(int[] old, int me) {
int[] arrays = new int[old.length - 1];
int index = 0;
for(int i=0;i<old.length;i++) {
if(old[i] != me) {
arrays[index++] = old[i];
}
}
return arrays;
}
}
import java.io.*;
public class Test{ public static void main(String[] args)throws Exception{ String [] array=new String[]{'1','2','3','4'}; listAll(Arrays.asList(array),'');}
public staic void listAll(List candidate,String prefix){ // if(candidate.isEmpty()){
System.out.println(prefix);
// }
for(int i=1;i<candidate.size();i++){ List temp =new LinkedList(candidate); listAll(temp,prefix+temp.remove(i);
}
}
}
1234的任何一种顺序,1234,1243,2314,4123...
期望是:1234,1243,1324,1342,1423,1432,2134,2143,2314,2341,2413,2431......
在这里有很多常用算法,自己慢慢学吧!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class huiwen1
{
public static void main(String[] args) throws IOException
{
System.out.println("请输入:");
String ss = new BufferedReader(new InputStreamReader(System.in)).readLine().toString();
if(ss.equals(new StringBuffer(ss).reverse().toString()))
System.out.println("是回文");
else
System.out.println("不是回文");
}}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class huiwen1
{
public static void main(String[] args) throws IOException
{
System.out.println("请输入:");
String ss = new BufferedReader(new InputStreamReader(System.in)).readLine().toString();
if(ss.equals(new StringBuffer(ss).reverse().toString()))
System.out.println("是回文");
else
System.out.println("不是回文");
}}
public static void main(String[]args) {
for(int i=1 ;i<5;i++){
for(int j=1;j<5;j++){
for(int k=1;k<5;k++) {
for(int l=1;l<5;l++)
{
if(i!=j&i!=k&i!=l&j!=k&j!=l&k!=l){
System.out.print(i);
System.out.print(j);
System.out.print(k);
System.out.print(l);
System.out.println();
}
}
}
}
}
}
}