c - ACM 10038 Jolly 套头衫

标签 c

我写了Jolly Jump problem的解决代码(ACM 10038 紫外线)。 我的代码如下:

#include<stdio.h>
#include<stdlib.h>

int main(){
  int count=0;
  int Number[3000]={0};
  int Absolute[3000]={0};
  bool flag=true;
  while(scanf("%d",&count)){
   for(int i=0;i<count;++i){
     scanf("%d",&Number[i]);
     Absolute[i]=0;
   }
   for(int j=0;j<count-1;++j){
     int diff=Number[j]-Number[j+1];
     if(diff<0)diff*=-1;
     Absolute[diff]=1;
   }
   flag=true;
   for(int x=1;x<count;++x){
     if(Absolute[x]!=1){
       flag=false;
       break;
     }
   }
   if(flag)printf("Jolly\n");
   else printf("Not Jolly\n");
 }
 return 0;
}

但是提交的结果是Time limit exceeded。为什么?如何修改我的代码以缩短运行时间?

最佳答案

您的程序可能超出了时间限制,因为它永远不会完成。如果/当 scanf() 返回 EOF 时,以下将永远不会停止循环:

while(scanf("%d",&count)){
    // whatever...
}

在这些在线编程问题中,通常最好至少针对他们在问题中提供的示例数据运行您提出的解决方案,看看您是否获得预期的输出。如果你的程序没有产生预期的输出,那么你就知道你有问题需要解决(并且你有一些具体的东西需要调试)。

关于c - ACM 10038 Jolly 套头衫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045246/

相关文章:

c - Ansi C 提示数组初始化

c - 用 C 列出环境变量

c - 使用 a[i] 和 *(a + i) 有区别吗?

c++ - 从文件中读取十六进制数据

c++ - 使用 gcc 进行静态和动态链接

c - 程序没有显示错误,但无法编译。你能帮我解决我需要做的事情吗

c - 如果字符指针指向的只读存储器不是连续的,那么它们如何工作?

c - 如何在版本控制中存储 C 库依赖项?

c - 如何从标准输入获取整数?快速地。可以用准确性换取性能

c - 有没有办法告诉操作系统丢弃任何缓冲的传出 TCP 数据?