天天看點

商品排序c語言時間超限,c語言程式,時間超限,怎麼解決

匿名使用者

1級

2015-12-14 回答

把原題目網址貼出來,你這樣看不出輸入和要求輸出的是啥

逾時很可能是你采用了暴力的方法求結果,你嘗試換一種思路使程式運作的時間減短

追問:

輸入

輸入的第一行為p,指代問題的個數。每個問題下的第一行輸入可用的樓層數。然後,每一樓層的大小和顔色表示在一行中,輸入-999999和999999之間的整數,負數表示紅色樓層和正數的藍色樓層,沒有大小為0的樓層。樓層的大小是數的絕值。不存在兩個樓層具有相同的大小。

輸出

對于每一個問題,每行輸出一個數,該數代表最大被利用樓層的個數。

追答:

你的代碼得出的結果是正确的嗎?我感覺下面這段代碼有點問題,你這兒像是要寫一個冒泡排序,但是那個表示問題個數的a卻跑到這段代碼裡來了。

我重新寫了代碼,如果你需要我就貼上來

for(c=0;c

{

int t,m;

for(m=0;m

{

if(abs(x[m])>abs(x[m+1]))

{

t=x[m];

x[m]=x[m+1];

x[m+1]=t;

}

}

}

追問:

得出的結果是正确的,把你寫的我看下嘛,謝了

追答:

這道題主要就是一個排序,我這兒寫的排序和你的排序方法有些不同。

下面是我的代碼(不一定直接就能過)

#include

#include

#define N 1000000

int flr[N];

int main()

{

int T;

scanf("%d",&T);

while(T--)

{

int n,i,t,f,cot=0;

for(i=0;i

{

flr[i]=0;

}

scanf("%d",&n);

for(i=0;i

{

scanf("%d",&t);

flr[abs(t)]=t/abs(t);

}

for(i=N-1;!flr[i];i--);

cot=1;

f=flr[i]>0?-1:1;

i--;

for(;i;i--){

if(flr[i]*f>0){

cot++;

f*=-1;

}

}

printf("%d\n",cot);

}

return 0;

}