Lion何先生 2021-04-30 16:58 采纳率: 0%
浏览 48
已结题

同样的程序再oj系统上提交Java会超时c语言不会

请各位大佬帮忙看看,为什么同样的程序再oj系统上提交Java会超时c语言不会

这是问题

以下分别是c语言代码与Java代码

c语言

#include<stdio.h>
int main()
{
    int K;
    scanf("%d",&K);
    while(K--)
    {
        int n,sum=1;
        scanf("%d",&n);
        int stra[100001],strb[100001];
        for(int i=0; i<n; i++)
        {
            scanf("%d",&stra[i]);
        }
        strb[0]=stra[0];
        for(int i=1; i<n; i++)
        {
            int flag=1;
            for(int j=0; j<sum; j++)
            {
                if(stra[i]==strb[j])
                {
                    flag=0;
                    break;
                }
            }
            if(flag==1)
            {
                strb[sum]=stra[i];
                sum+=1;
            }
       }
       if(sum>4)
            printf("No\n");
       else if(sum<4)
            printf("Yes\n");
       else
       {
           for(int i=0;i<3;i++)
           {
               for(int j=0;j<3-i;j++)
               {
                   if(strb[j]>strb[j+1])
                   {
                       int q=strb[j];
                       strb[j]=strb[j+1];
                       strb[j+1]=q;
                   }
                }
           }
           if((strb[3]-strb[1])==((strb[2]-strb[0])))
                printf("Yes\n");
           else  printf("No\n");
        }
    }
    return 0;  
 } 

Java

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k=in.nextInt();
        while(k>0){
            int n= in.nextInt();
            int sum=1;
            int[] stra=new int[100001];
            int[] strb=new int[100001];
            for (int i = 0; i < n; i++) {
                stra[i]= in.nextInt();
            }
            strb[0]=stra[0];
            for(int i=1; i<n; i++)
            {
                int flag=1;
                for(int j=0; j<sum; j++)
                {
                    if(stra[i]==strb[j])
                    {
                        flag=0;
                        break;
                    }
                }
                if(flag==1)
                {
                    strb[sum]=stra[i];
                    sum+=1;
                }
            }
            if(sum>4)
                System.out.println("No");
            else if(sum<4)
                System.out.println("Yes");
            else
            {
                for(int i=0;i<3;i++)
                {
                    for(int j=0;j<3-i;j++)
                    {
                        if(strb[j]>strb[j+1])
                        {
                            int q=strb[j];
                            strb[j]=strb[j+1];
                            strb[j+1]=q;
                        }
                    }
                }
                if((strb[3]-strb[1])==((strb[2]-strb[0])))
                    System.out.println("Yes");
                else  System.out.println("No");
            }
            k--;
        }
    }
}
  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-04-30 16:59
    关注

    这个是系统问题,应该和编程语言没太大关系

    评论

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。