永发信息网

c语言程序,时间超限,怎么解决

答案:3  悬赏:40  手机版
解决时间 2021-01-03 13:51
  • 提问者网友:夢醒日落
  • 2021-01-02 13:03
楼层的大小必须严格大于它上一楼层的大小。此外,设计师要给建筑物涂上的蓝色和红色,每楼层一种颜色,并在这样的方式的两个连续的楼层的颜色是不同的。建筑师有n个可用楼层,每个楼层有与其相关的大小和颜色信息。所有可用的楼层尺寸不同。在这些限制下,建筑师要尽可能多地利用楼层,设计出可能的最高建筑。代码如下,程序是对的,但提交提示时间超限,怎么改求教
#include<stdio.h>
#include<math.h>
int qe(int a)
{
if(a>0) return 1;
else return 0;
}
int main()
{
int a,b;
scanf("%d",&a);
for(b=0;b<a;b++)
{
int i,j,c,d,e,f;
scanf("%d",&i);
d=i-1;
int x[i];
for(j=0;j<i;j++)
{
scanf("%d",&x[j]);
}
for(c=0;c<i;c++)
{
int t,m;
for(m=0;m<a-c;m++)
{
if(abs(x[m])>abs(x[m+1]))
{
t=x[m];
x[m]=x[m+1];
x[m+1]=t;
}
}
}
e=d-1;
f=0;
while(d>=1)
{
if(qe(x[d])!=qe(x[e]))
{
f++;
d=e;
e--;
}
else e--;
}
printf("%d\n",f);
}
}
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-01-02 14:04
将scanf输入换成从文件读取数据,使用fopen, fread, fwrite之类的函数,不要从终端上直接输入。或者使用重定向<从文件读取数据。

如果效率还是不行,再将printf改成输出到文件中。
全部回答
  • 1楼网友:慢性怪人
  • 2021-01-02 14:35
把原题目网址贴出来,你这样看不出输入和要求输出的是啥 超时很可能是你采用了暴力的方法求结果,你尝试换一种思路使程序运行的时间减短
  • 2楼网友:独钓一江月
  • 2021-01-02 14:18
n 太大耗时太多,需要改小 去掉 gets(); 增加一个 int k; 用来判断scanf输入成功. while( (k=scanf("%d", &n))!=eof) { if(k==1 && n>12 && n<=1300000) {}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯