cpu 1800+ 从1输出到8需要56秒。。。。
Losing emotion, Finding devotion.
我的算法如下,用了递归,感觉虽然比较清晰,但是应该没有上面的那么高效。
使用printf的时候我等了好久,估计要个几分钟……
使用fprintf的时候好像花了三秒钟吧,我的AM2 64*2 3600+……
PS:找到了一些资料,发现自己的算法太笨了,就改了下……
[CODE]
#include <stdio.h>
#define N 9
int arr[]={1,2,3,4,5,6,7,8,9};
int count=0;
FILE* fp;
void fdisplay() {
for (int i=0;i<N;i++)
fprintf(fp,"%4d",arr[i]);
fprintf(fp,"\n");
count++;
}
void swap(int* l,int* r) {
int tmp=*l;
*l=*r;
*r=tmp;
}
void qp(int *a,int len,int lev) {
if (len==1)
fdisplay();
else
for (int i=0;i<len;i++) {
swap(a,a+i);
qp(a+1,len-1,lev+1);
swap(a,a+i);
}
}
void main() {
fp=fopen("a.txt","w");
qp(arr,N,1);
fclose(fp);
printf("count=%d\n",count);
getchar();
}
[/CODE]
[此贴子已经被作者于2007-11-19 13:48:04编辑过]