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