簡體   English   中英

有沒有辦法在運行時間上優化此C程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM