如何编写卡时程序?(有关pascal编程)

来源:百度知道 编辑:UC知道 时间:2024/07/06 22:33:25
卡时程序就是指程序测试时,如果即将超时,就停止程序,并随机审结果的程序,求找例题?
是指Free pascal中。

time:=meml[64:108];
....(语句A)
time:=meml[64:108]-time;
可得到语句A的执行时间
顺便说一句,我总是用meml[64:108]/18.2,好像比较精确??
而且这个函数在FPC2.0中不能用

如何实现卡时?

[陈世熹]
卡时是一种让程序在运行了指定长度的时间以后可以自动终止运行并输出结果的技术,其基本原理通常是在程序启动时获取启动时间,然后在程序重复执行的地方获取当前时间,通过计算时间差判断程序已经运行了多久,当程序已运行的时间达到或接近指定的时间后立即输出已知的最优结果并且中断程序。卡时技术通常用在使用穷举或搜索的程序中。

在Borland/Turbo Pascal中,可以通过访问MemL[Seg0040:$006C]来获取当前时间,它返回的是当日零时到现在所经过的时间,单位约为55毫秒(约1/18.2秒)。下面是一个使用卡时技术的样例程序:

{$N+}

var
  StartTime: Longint;
  I, J: Extended;

begin
  StartTime := MemL[Seg0040:$006C];
  I := 0;
  J := 0;
  repeat
    if I * I - 1234567 * I + 777 < J * J - 1234567 * J + 777 then J := I;
    I := I + 1;
  until MemL[Seg0040:$006c] - StartTime >= 500 div 55;
  Writeln('x^2 - 1234567x + 777 has a minimum result w