#5834: 奇怪的逾時


abccaba (想一想)

學校 : 國立武陵高級中學
編號 : 19651
來源 : [140.112.25.77]
最後登入時間 :
2013-04-12 14:44:49
d889. 2.黑傑克(jack) -- 99學年度台北市資訊學科能力競賽 | From: [59.115.79.9] | 發表日期 : 2011-09-17 15:08

我的問題在於,使用自己的Dev-C++4.9.9.2編譯出來都跑很好,但解題送出卻全部逾時。

而且據我所知,有一組測資只有一個病人吧,這樣也會逾時?!

去看本題狀況和討論,其他人好像都沒這種問題。

難道我讀取和輸出的方式其實是不正確的嗎?還是這裡的編譯跟電腦上的有什麼地方不一樣?

以下是我的程式碼,邏輯上自己測試是沒問題的,問題在逾時。

#include<stdio.h>
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a)!=0){
     int d[a+1];
     for(b=0;b<a;b++){scanf("%d",&d[b]);}
     c=0;
     f=0;
     while(f<a){
      e=0;
      for(b=1;b<a-f;b++){if(d[b]<d[b-1]){e=b;}}
      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

大家也可以試試看放在自己電腦裡執行,是否跟我一樣。

 
#5835: Re:奇怪的逾時


godman (我是新手)

學校 : 臺北市松山區三民國民小學
編號 : 19693
來源 : [182.235.191.165]
最後登入時間 :
2012-12-28 22:46:26
d889. 2.黑傑克(jack) -- 99學年度台北市資訊學科能力競賽 | From: [219.71.244.39] | 發表日期 : 2011-09-17 16:42

我的問題在於,使用自己的Dev-C++4.9.9.2編譯出來都跑很好,但解題送出卻全部逾時。

而且據我所知,有一組測資只有一個病人吧,這樣也會逾時?!

去看本題狀況和討論,其他人好像都沒這種問題。

難道我讀取和輸出的方式其實是不正確的嗎?還是這裡的編譯跟電腦上的有什麼地方不一樣?

以下是我的程式碼,邏輯上自己測試是沒問題的,問題在逾時。

#include
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a)!=0){
     int d[a+1];
     for(b=0;b     c=0;
     f=0;
     while(f      e=0;
      for(b=1;b      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

大家也可以試試看放在自己電腦裡執行,是否跟我一樣。


你這樣沒辦法判斷EOF吧 
#5836: Re:奇怪的逾時


stanley17112000 (Stanley)

學校 : 國立交通大學
編號 : 13580
來源 : [66.253.158.102]
最後登入時間 :
2019-02-16 03:29:47
d889. 2.黑傑克(jack) -- 99學年度台北市資訊學科能力競賽 | From: [163.21.241.84] | 發表日期 : 2011-09-17 17:00

我的問題在於,使用自己的Dev-C++4.9.9.2編譯出來都跑很好,但解題送出卻全部逾時。

而且據我所知,有一組測資只有一個病人吧,這樣也會逾時?!

去看本題狀況和討論,其他人好像都沒這種問題。

難道我讀取和輸出的方式其實是不正確的嗎?還是這裡的編譯跟電腦上的有什麼地方不一樣?

以下是我的程式碼,邏輯上自己測試是沒問題的,問題在逾時。

#include
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a)!=0){
     int d[a+1];
     for(b=0;b     c=0;
     f=0;
     while(f      e=0;
      for(b=1;b      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

大家也可以試試看放在自己電腦裡執行,是否跟我一樣。


你這樣沒辦法判斷EOF吧

#include
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a) == 1 ){
     int d[a+1];
     for(b=0;b     c=0;
     f=0;
     while(f      e=0;
      for(b=1;b      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

當scanf 接收到 EOF 的回傳值是 -1

你用 !=0 當然判斷不暸

妳也可以打 while (scanf("%d",&a) != -1 )

 
#5841: Re:奇怪的逾時


abccaba (想一想)

學校 : 國立武陵高級中學
編號 : 19651
來源 : [140.112.25.77]
最後登入時間 :
2013-04-12 14:44:49
d889. 2.黑傑克(jack) -- 99學年度台北市資訊學科能力競賽 | From: [59.115.78.111] | 發表日期 : 2011-09-18 09:33

我的問題在於,使用自己的Dev-C++4.9.9.2編譯出來都跑很好,但解題送出卻全部逾時。

而且據我所知,有一組測資只有一個病人吧,這樣也會逾時?!

去看本題狀況和討論,其他人好像都沒這種問題。

難道我讀取和輸出的方式其實是不正確的嗎?還是這裡的編譯跟電腦上的有什麼地方不一樣?

以下是我的程式碼,邏輯上自己測試是沒問題的,問題在逾時。

#include
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a)!=0){
     int d[a+1];
     for(b=0;b     c=0;
     f=0;
     while(f      e=0;
      for(b=1;b      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

大家也可以試試看放在自己電腦裡執行,是否跟我一樣。


你這樣沒辦法判斷EOF吧

#include
int a,b,c,e,f;
int main(void){
    while(scanf("%d",&a) == 1 ){
     int d[a+1];
     for(b=0;b     c=0;
     f=0;
     while(f      e=0;
      for(b=1;b      if(d[e]-c>29){break;}
      if(d[e]>c){c=d[e];}
      c=c+5;
      d[a]=d[e];d[e]=d[a-1-f];d[a-1-f]=d[a];
      f++;
            }
      printf("%d\n",c+30);}

return 0;}

當scanf 接收到 EOF 的回傳值是 -1

你用 !=0 當然判斷不暸

妳也可以打 while (scanf("%d",&a) != -1 )


喔喔原來是這麼回事,難怪會發生這種事情。

AC了!!

 
ZeroJudge Forum