import java.util.*;public class Align
{
int j=0,ini=0;
char[] res;
public void align(char[] c)
{
if(ini==0)
{
res=new char[c.length];
ini++;
}
char[] tmpSave=new char[c.length-1];
if(tmpSave.length==0)
{
res[j]=c[0];
// System.out.println(Arrays.toString(res));
j--;
return;
}
for(int i=0;i<c.length;i++)
{
res[j]=c[i];
for(int m=0,k=0;m<c.length;m++)
{
if(m!=i)tmpSave[k++]=c[m];
}
j++;
align(tmpSave);
}
j--;
}
public static void main(String[] args)
{
long start=System.nanoTime();
new Align().align("ABCDEFGHIJKLMN".toCharArray());
System.out.println(System.nanoTime()-start);
}
}
上面代码是计算"ABCDEFGHIJKLMN"所有的排列可能,如果把代码中的注释去掉,将会在控制台中打印每一种组合,
当然,我这个算法很烂,时间复杂度是n的阶乘(如果我没弄错的话),按道理他执行的指令大概是14!,因为一行JAVA代码可能是由若干条机器指令组成的,再加上其它一些乱七八糟的,我就算执行指令的次数是14!的10倍,这个数就是12789452800,
而我的CPU是2GHZ的,就算全是4周期指令,那么一条指令的时间大概是4*12*1/2000000000,两者相乘,那么就大概是288秒,5分种怎么都执行完了,怎么我执行了半小时还没执行完,暴汗一个,是不是其中我哪里估算错了,少估了个数量级?
解决方案 »
- 请问下怎么从一个文件夹下的一个类引用另一个文件夹下的一个类
- JAVA如何通过调用FIREFOX内核显示网页?或者其他方法显示
- 哪位有混淆器joc.jar啊?麻烦发给我一份吧
- 一般,除了全角半角的空格之外,还有些什么样的空格?....烦,,,大家怎么过滤的?
- [求助]
- java关于Runtime.getRuntime().exec()执行bat的问题?
- 问java能生成直接可执行文件么?
- 誰能給各簡單的例子
- 为什么我的XP老是自动关机?
- xiexiaohui对不起,给你分
- 点页面就崩溃~~~~~~~~~~~从错误信息也看不出问题。不知大家有没有遇到这种情况过,或者有什么思路处理啊
- 散分100分,求助java 分行读取txt文本中特定内容,在线等待。。。
ABCDEFGHIJKLMN 太多了 不适合找问题
用AB 和ABC 看下 自己跟踪下 就知道没有有逻辑的问题了