【发布时间】:2015-02-14 20:47:25
【问题描述】:
我想找到从源到目的地的最低跳数。我的输出是正确的,但是当给定 100000 个条目时,我的程序的执行时间就像 1.0015 秒。但我需要在 1 秒的时间内完成该程序。我已经尝试了很多来减少执行时间,但不能。任何人都可以帮助我在 1 秒内实现执行时间。
样本输入 - 1 10 2
样本输出 - 5
P.S- 该程序是远程执行的。输入的数量可以是
#include<stdio.h>
int main()
{
unsigned int n, i, j, k, h,count=0,l=0;
scanf("%u", &n);
for (i=0;i<n;i++)
{
scanf("%u %u %u", &j, &k, &h);
l=j;
count = 0;
while(l<=k)
{
if(l%h==0)
{
count=count+1;
}
l++;
}
printf("%u\n", count);
}
return 0;
}
【问题讨论】:
-
Code Review 会更好吗?
-
这段代码的意图是什么?
-
答案不就是 (k-j+h-1)/h 吗?
-
@ArindrajitChakraborty:嗯,不完全是 5,因为 5 次 2 的跳跃会带你到 11。
-
@PeterdeRivaz:是的,从
j慢慢迭代到k,每一步都取模可能是解决这个问题的最慢方法。
标签: c performance algorithm math runtime