商品排序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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值