输入22 看下你们的运行时间是多少文档格式.docx
《输入22 看下你们的运行时间是多少文档格式.docx》由会员分享,可在线阅读,更多相关《输入22 看下你们的运行时间是多少文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
cin>
>
n;
start=GetTickCount();
hanoi(n,a,b,c);
finish=GetTickCount();
floattime=(finish-start)/1000.0;
timeis"
time<
∙对我有用[0]
∙丢个板砖[0]
∙引用
∙举报
∙管理
∙TOP
回复次数:
29
∙
∙wangdeqie
∙(似水流年)
∙等 级:
∙3
#1楼得分:
0回复于:
2008-08-0611:
47:
36
C/C++code
timeis157.5
Pressanykeytocontinue
∙FallingStar08
∙(星光陨落)
#2楼得分:
51:
37
你的机子是不是太慢了。
#3楼得分:
2008-08-0612:
20:
29
引用2楼FallingStar08的回复:
是啊,快3分钟了,我还以为是死循环呢,一直运行个没完没了的
∙zxcv8356631
∙(JustLook)
#4楼得分:
24:
52
报个数据
R版..
输入20运行时间107.734
把move函数改成inline
输入20运行时间99.078
把move里的cout去掉成为空的inline函数
输入20运行时间0.016
我自己吓了一跳...
∙nirendao
∙(黑山老猫)
#5楼得分:
31:
31
何必使用windows.h呢?
用time.h:
clock_tt1,t2;
t1=start();
...
t2=end();
doubletime=(t2-t1)/CLOCKS_PER_SECONDS;
就可以了
#6楼得分:
34:
59
集思广益讨论如何优化这个程序。
∙ykx_yeer
∙(ykx_yeer)
#7楼得分:
49:
43
呵呵
∙e_sharp
∙(楼长)
#8楼得分:
2008-08-0613:
02:
33
去掉move,果然很快
引用4楼zxcv8356631的回复:
报个数据R版..输入20运行时间107.734把move函数改成inline输入20运行时间99.078把move里的cout去掉成为空的inline函数输入20运行时间0.016我自己吓了一跳...
#9楼得分:
17:
16
把MOVE去掉程序就不完整了啊
∙WuBill
∙(Bill)
#10楼得分:
07
输入22
timeis95.469
Pressanykeytocontinue
∙lzr4304061988012
∙(graduate,达也,加油!
)
#11楼得分:
30:
35
看我LENOVO
现在还没跑完
#12楼得分:
33:
25
timeis223.14
oh,mygod!
#13楼得分:
35:
46
可见你们的机子多么烂了。
∙Lx_china
∙(萝卜)
#14楼得分:
57:
09
引用13楼FallingStar08的回复:
这题无解,输出到终端速度就这样。
fprintf直接写到文件里耗时4.25
#15楼得分:
58:
38
总共输出了16,777,212字节数据
#16楼得分:
39
我ASP2800+用了67秒。
#17楼得分:
59:
自觉机子已经很烂了
#18楼得分:
2008-08-0614:
05
刚用release版本跑了一下,2.672秒,输出文件25,165,818字节(上次没算回车换行)
∙mLee79
#19楼得分:
10回复于:
14
这东西有虾米好优化的,完全看输出速度,当然要异步IO快...不过你的东东也太慢了...
stdio.h>
stdlib.h>
typedefunsignedlongu32;
#ifIS_BIG_ENDIAN
#defineXINFO_A_2_B(a,b)(u32)(((a)<
<
24)|('
-'
16)|((b)<
8)|('
\n'
0))
#else
0)|('
8)|((b)<
16)|('
24))
#endif
staticconstintsBox_1[]={1,0,3,2,5,4};
staticconstintsBox_2[]={2,4,0,5,1,3};
staticconstu32sInfo1[]={
XINFO_A_2_B('
A'
'
C'
),
B'
)};
staticconstu32sInfo2[]={
#defineXMAXIMUM_N(128)
#defineXBUFFSIZE(1024*16)/*even*/
voidhanio(intN,FILE*ofs)
{
intcurr=0,stack[XMAXIMUM_N],*stack_ptr=stack;
u32fbuff[XBUFFSIZE],*constfbuff_end=fbuff+XBUFFSIZE,*fbuff_ptr=fbuff;
while
(1)
{
if(1!
=N)
*stack_ptr++=sBox_2[curr]|((--N)<
8);
curr=sBox_1[curr];
}
else
{
*fbuff_ptr++=sInfo1[curr];
/*odd*/
if(stack_ptr==stack)
break;
/*done*/
curr=*--stack_ptr;
N=curr>
8;
curr&
=0xFF;
*fbuff_ptr++=sInfo2[curr];
/*even*/
if(fbuff_ptr==fbuff_end)
fwrite(fbuff,1,sizeof(fbuff),ofs);
fbuff_ptr=fbuff;
}
if(fbuff_ptr!
=fbuff)
fwrite(fbuff,1,sizeof(u32)*(fbuff_ptr-fbuff),ofs);
}
intmain(intargc,char*argv[])
inti;
intN=16;
FILE*ofs=NULL;
for(i=1;
i<
argc;
++i)
if(argv[i][0]=='
)
switch(argv[i][1])
case'
n'
:
case'
N'
N=atoi(argv[i]+2);
o'
O'
if(NULL!
=ofs)
exit
(1);
ofs=fopen(argv[i]+2,"
wb"
);
if(NULL==ofs)
ofs=stdout;
if(N<
=0)
N=1;
if(N>
XMAXIMUM_N)
N=XMAXIMUM_N;
hanio(N,ofs);
fclose(ofs);
return0;
$cl/nologo/O2/Ox/Ogt2.c;
forAAin20222425262830;
doechoN==$AA;
time./t2-N$AA-ONUL;
done;
t2.c
N==20
real
0m0.047s
user
0m0.015s
sys
0m0.031s
N==22
0m0.046s
N==24
0m0.157s
N==25
0m0.281s
N==26
0m0.547s
N==28
0m2.125s
N==30
0m8.437s
0m0.000s
#20楼得分:
04:
51
超人先生。
你这个偶看不懂啊
∙skybate
∙(天涯)
#21楼得分:
05:
34
我的直接运行死机了
#22楼得分:
06:
08
我晕
#23楼得分:
09:
TRACE0issimilartoTRACEandisonevariantofagroupoftracemacrosthatyoucanusefordebugoutput.
TRACE0(
exp
忽然想起了这个,楼主是想告诉我们不要没事打印一堆没用的调试信息,很慢的
#24楼得分:
11:
30
汉诺塔(又称河内塔)问题是印度的一个古老的传说。
开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
解答结果请自己运行计算,程序见尾部。
面对庞大的数字(移动圆片的次数)184********709551615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。
后来,这个传说就演变为汉诺塔游戏:
1.有三根杆子A,B,C。
A杆上有若干碟子
2.每次移动一块碟子,小的只能叠在大的上面
3.把所有碟子从A杆全部移到C杆上
经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片:
如3阶汉诺塔的移动:
A→C,A→B,C→B,A→C,B→A,B→C,A→C
此外,汉诺塔问题也是程序设计中的经典递归问题。
#25楼得分:
16:
64位个金片的话,够我们的超级计算机算几十年了
∙lijpbasin
∙(lijpbasin)
#26楼得分:
5回复于:
04
将输出重定向到文件
timeis14.078
直接在屏幕上输出
timeis217.406
∙congguohua
∙(咔嚓)
#27楼得分:
2008-08-0615:
00:
03
timeis836.196
#28楼得分:
37:
40
等待高手出现。
∙Vegertar
∙(diao)
#29楼得分:
2008-08-0616:
19L强人!