匿名使用者
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;
}