明明答案都一樣,樣例也沒問題,為什么提交確是時間超限呢??
這里給大家舉一個例子,如果是一個N以內素數的問題,大家可能會使用常見的算法如:
#include<stdio.h> int main() { int i,j; int N,a; scanf("%d",&N); for(i=2;i<=N;i++) //因為 1 不是素數,所以 i 要從 2 開始 { a=0; // a 要賦值 0 否則會出錯 for(j=2;j<i;j++) //第二個循環(huán)判斷 i 能否能被其它數整除 { if(i%j==0) //如果 i 能被其它數整除,a 就自增 a++; } if(a==0) //判斷 a=0 如果這個數除了本身和 1 沒有數能整除它就輸出 printf("%d\n",i);//輸出這邊注意要換行 } return 0; }
這是典型的素數算法,思路一點沒有錯。但是,如果題目中沒有說N的范圍,或者有隱藏題意N可能會達到百萬數量級,大家可以想想此種雙重循環(huán)的結構下的算法效率,是否可以在一秒以內跑出來? 那么時間超限也就不足為怪了吧
因此總結,時間超限的根本原因可能在于我們低估了題目的數據范圍,從而低估了題目難度,常規(guī)算法已經無法滿足導致
C語言網提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程