我的問題在於,使用自己的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;}
大家也可以試試看放在自己電腦裡執行,是否跟我一樣。
我的問題在於,使用自己的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;}
大家也可以試試看放在自己電腦裡執行,是否跟我一樣。
我的問題在於,使用自己的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;}
大家也可以試試看放在自己電腦裡執行,是否跟我一樣。
#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 )
我的問題在於,使用自己的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;}
大家也可以試試看放在自己電腦裡執行,是否跟我一樣。
#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了!!