1. 程式人生 > >Time Limit Exceeded的原因及避免方法

Time Limit Exceeded的原因及避免方法

經常會遇到這種令人抓狂的情況

自己編寫的程式在codeblocks上怎麼編譯執行都能輸出正確結果

然而一提交,卻無法Accept,很多時候顯示的並不是Wrong Answer 而是比WrongAnswer更令人絕望的  。

在oj中,給定的Time Limit 是1000MS,出現Time Limit  Exceeded則說明這個程式的執行時間超過了這個限度。

經過幾道題,我猜想了幾個關於超時的原因:

————————————————————————————————————————————————————

1.沒有迴圈終止條件。

就是說程式中存在一個迴圈,但是這個迴圈沒有終止條件,或者說是條件太寬泛,在執行的時候雖然能輸出結果,但這個迴圈會一直迴圈下去,導致執行時間過長。

例如:

在1001中,要測試多組資料,進行多次迴圈,

如果這樣寫

for(m=0;m>0;m++)

scanf(.......)

......

企圖讓輸入一直迴圈,理論上並沒有什麼問題,程式也能執行正確,但卻會超時。

因為沒有一個終止的條件,計算機會一直不斷去執行,m只會無限大,這是實際一種很無賴的做法。

而如果要想用一個合理的方式實現無限次迴圈,就需要用

while(scanf()!=EOF)

......

這裡雖然也可無限次的迴圈,卻有了終止條件:返回值為-1 的時候

關於while(scanf()!=EOF)的用法原理,

我再網上查閱得到:

  scanf("%d,%d", &a, &b)中

如果a和b都被成功讀入,那麼scanf的返回值就是2

    如果只有a被成功讀入,返回值為1

    如果a和b都未被成功讀入,返回值為0

 如果遇到錯誤或遇到end of file,返回值為EOF。

——————————————————————————————————————————————————————

2.函式呼叫超時。

例如:

在1279中,需要用到一個n的階乘。

在第一次做的時候,我呼叫了一個遞迴函式來求階乘,執行測試正確,卻出現了超時情況。

然後換了一種做法,用一個for迴圈去求階乘,結果就通過了。

我上網查詢得到,遞迴呼叫因為經常會呼叫自身很多次,所以時間的複雜度是指數級別的。

——————————————————————————————————————————————————————

3.程式演算法不夠優化。

就是說自己的程式太複雜,存在更快更有效率的方法。

所以在解決問題時,應儘量選擇簡單的演算法。

如果遇到了這種情況,只能換一個思路了。

——————————————————————————————————————————————————————

4.程式本身存在問題。

相關推薦

Time Limit Exceeded原因避免方法

經常會遇到這種令人抓狂的情況 自己編寫的程式在codeblocks上怎麼編譯執行都能輸出正確結果 然而一提交,卻無法Accept,很多時候顯示的並不是Wrong Answer 而是比WrongAnswer更令人絕望的  。 在oj中,給定的Time Limit 是1

Time Limit Exceeded錯誤的原因

很多時候我們看到Time Limit Exceeded馬上會想到一定是演算法太慢,不符合要求,其實往往還可能遇到一種情況是沒有判斷輸入結束,不然 系統一直在那等你的輸出結果,發現你一直不輸出,或者程式一直不退出,所以給Time Limit Exceeded。 比如讓你輸入整數n,然後輸入n組

java.lang.OutOfMemoryError GC overhead limit exceeded原因分析解決方案

最近一個上線執行良好的專案出現使用者無法登入或者執行某個操作時,有卡頓現象。查看了日誌,出現了大量的java.lang.OutOfMemoryError: GC overhead limit exceeded錯誤。 oracle官方給出了這個錯誤產生的原因和解決方法: Exception in thread

蓄電池短路形成原因判斷方法

蓄電池短路形成原因及判斷方法 正負極板間本來是由多孔隙絕緣物——隔板隔開的,但如果有焊渣或枝晶(鉛枝)穿透,則正負板相連,形成短路。嚴重的短路可以導致該單體電壓變為零,如果導致正負極相連的物質本身電阻較大,比如枝晶,則不會馬上使該單格電壓變為零,而是發生較快的自放電,俗稱軟短路。ups不間斷電源使用過程中,

mysql主從同步延遲原因解決方法

解決方案 數據庫 master 朋友 mysql MySQL主從延遲原因以及解決方案:談到MySQL數據庫主從同步延遲原理,得從mysql的數據庫主從復制原理說起,mysql的主從復制都是單線程的操作(mysql5.6版本之前),主庫對所有DDL和DML產生binlog,binlog是順序

在js文件中寫el表達式取不到值的原因解決方法

.ajax cnblogs 一個 雙引號 ssid null 使用 ucc name 1、javascript是客戶端執行,EL是在服務端執行,而服務端比客戶端先執行,所以取不到值 2、要想獲取"${jcDropClass.jcClass.id}"的值,可以在jsp中,用一

旗正規則引擎內存表出錯的原因解決方法分享

規則引擎 企業信息化 系統升級 業務規則管理系統1 內存表1.1 匯總1.1.1 錯誤匯總列中必須包含分組列所屬部門 1.1.2 解決方案點擊圖片中的“sum(基本工資)”,彈出窗體,將所屬部門加入。引發該問題的原因是,分組列存在的字段,必須要包含在匯總列中。1.

load data inpath出錯原因解決方法

別名 and err failed 導入 ase line 解決 機器名 hive> load data inpath "hdfs://Master.hdp:9000/person.txt" into table Person1;

VS調試_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩潰原因解決方法

說道 動態 意義 討論 清理 問題 [] all 測試 今天下午對面的老大調試遇到這個問題,大家一起討論好久才解決這個問題 crt源代碼都是可以看到的,為了了解清楚原因,十分有必要查看源碼,源碼一般在你的VS安裝路徑下VC\crt\src下。 點擊重試,定位到崩潰源碼地方

Eclipse java文件、包、工程左下角有感嘆號原因處理方法

技術分享 image 指定元素 有感 blog 窗口 處理 import 引用 先想如圖所示: 原因:多是import引用了無用的類,或集合沒指定元素的類型 解決方案如下: 1、可逐一到出現感嘆號的java文件中去處理 2、可根據markers窗口下的Java Probl

jmeter(二十二):內存溢出原因解決方法

ext 內容 str 百度百科 詳細 由於 ora aik 異常 jmeter是一個java開發的開源性能測試工具,在性能測試中可支持模擬並發壓測,但有時候當模擬並發請求較大或者腳本運行時間較長時,壓力機會出現卡頓甚至報異常————內存溢出,這裏就介紹些如何解決內存溢出及相

SSH連接時出現Host key verification failed的原因解決方法

避免 and 方便 roo code middle rect int 添加 SSH連接的時候Host key verification failed. [root@cache001 swftools-0.9.0]# ssh 192.168.1.90@@@@@@@@@@@@@

ssh 免密碼登錄(設置後仍需輸密碼的原因解決方法

方法 use gpo 用戶權限 iteye img 寫到 ali clas ssh免密碼登錄的原理: serverA 免密碼登錄到 serverB 機器A 向 機器B 進行免密碼登陸 step1: 在機器A中生成 私鑰和公鑰: ssh-keygen -t rsa

服務器出現 HTTP 400、404、500、502 錯誤原因解決方法

服務器出現 http 400、404基本涵蓋了所有問題HTTP 400 – 請求無效HTTP 401.1 – 未授權:登錄失敗HTTP 401.2 – 未授權:服務器配置問題導致登錄失敗HTTP 401.3 – ACL 禁止訪問資源HTTP 401.4 – 未授權:授權被篩選器拒絕HTTP 401.5 – 未

網站響應時間過長的原因解決方法

網站打不開 網站程序 cas ron height 出口 javascrip 運算 access 遇到過類似問題,我認為有以下幾個原因: 1、網站服務器故障維修(這種情況只能等段

ssm整合時出現 org.springframework.beans.factory.BeanCreationException :Error creating bean with name ‘XXX’ 異常的原因解決方法

ase wan oca conn sna aspect ava 配置 ng- ssm整合時出現 org.springframework.beans.factory.BeanCreationException :Error creating bean with name ‘X

navicat報錯2005 - Unknown MySQL server host 'localhost' (0) 原因解決方法

數據 post 解決 nav 技術 img 互聯網 才會 sql 報錯原因:沒有連接互聯網,用navicat連接本地mysql數據庫,連接屬性ip為localhost。 解決辦法:將ip改為127.0.0.1即可。localhost是需要DNS解析後才會是127.0.0.

服務器啟動的原因解決方法

服務器 服務器故障 一:服務器無法啟動的主要原因 : ①市電或電源線故障(斷電或接觸不良) ②電源或電源模組故障 ③內存故障(一般伴有報警聲) ④CPU故障(一般也會有報警聲) ⑤主板故障 ⑥其它插卡造成中斷沖突二、服務器無法啟動 1、檢查電源線和各種I/O接線是否連接正常。2、檢查連接

C#調用dll提示"試圖加載格式不正確的程序"原因解決方法

strong str 調用 http 解決 操作系統 就會 項目設計 utm 轉載:https://blog.csdn.net/songyi160/article/details/51354660 程序在32位操作系統上運行正常,在64位操作系統上運行讀卡功能提示”試圖加載

出現System.web.mvc沖突的原因解決方法CS0433

work ken tar -- asp img version trac rpc 1.問題描述 CS0433:類型“System.Web.Mvc.WebViewPage<TModel>”同時存在於URL1和URL2中 2.解決方案