[英]Is there a way to optimize this C program in terms of run time
它的目的是打印所有直到第93位的斐波那契數字
#include<stdio.h>
void main(){
unsigned long long first=0,second=1,sum;
printf("%llu,%llu",first,second);
unsigned char hops=1;
while (hops<93) {
sum=first+second;
printf(",%llu",sum);
first=second;
second=sum;
hops++;
}
printf("\n");
}
當然可以。 只需打印預先計算的數字字符串即可。
#include <stdio.h>
int main()
{
puts("0,1,1,2,3,5,...");
return 0;
}
如果您需要優化整個操作,則需要考慮時間和空間的復雜性。 從現在開始,您可以考慮這些方法可以做的更好。
現在打印n
數字當然需要迭代,該迭代的時間復雜度為O(n)
。 有什么更好的方法嗎? 關鍵是,如果您多次執行此操作,則可以通過將其存儲在某個位置來擺脫添加。 但這不會為您帶來更好的漸近時間復雜度改進-而是您將面臨O(n)
空間復雜度-如果僅執行打印操作,這將是頭疼的事情。 (當然,必須進行預計算)。
因此,是的,此解決方案足以實現您要執行的操作。
萬一您需要掃描一些輸入-那么我會要求您使用getchar
獲取輸入,然后從中形成數字(如果需要)。 如果您在SPOJ或競爭性編程判斷服務器中考慮這一點,則這些往往會帶來更好的結果。 (在大量輸入情況下,重新開始時間比scanf
短-10 ^ 7等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.