文章

46

粉丝

1061

获赞

216

访问

1120.7k

头像
无法正确通过题目都是哪些原因造成的?
推荐阅读
综合
发布于2020年2月20日 15:49
阅读数 192.0k

同学们首先要知道DreamJudge返回的结果分别代表了什么意思

  • Accepted:答案正确,恭喜你正确通过了这道题目。
  • Wrong Answer: 答案错误,出现这个错误的原因一般是你的程序实现或思路出现了问题,或者数据范围边界没有考虑到。
  • Runtime Error:运行时错误,出现这个错误的原因一般是数组越界或者递归过深导致栈溢出。
  • Presentation Error:输出格式错误 ,出现这个错误的原因一般是末尾多了或少了空格,多了或少了换行
  • Time Limit Exceeded:程序运行超时,出现这个错误的原因一般是你的算法不够优秀,导致程序运行时间过长。
  • Memory Limit Exceeded:运行内存超限,出现这个错误的原因一般是你的程序申请太大了空间,超过了题目规定的空间大小。
  • Output Limit Exceeded:输出超限,出现这个错误的原因一般是你的程序输出内容超过了题目答案长度的2倍以上,一般情况是忘记注释掉调试信息。
  • Compile Error:编译错误,这个不用说了吧,就是你的代码存在语法错误,检查一下是不是选择错误的语言提交了。
  • Submitting:提交中,请等待题目结果的返回,一般情况马上就能反馈结果。如果10秒后还没反馈结果,建议去提交状态里看看。

 

新手经常会问一个问题:为什么我在自己的电脑上能够通过题目的样例数据测试,但是提交上去却告诉我Wrong Answer?

这是一个显而易见的问题,比如一道题让你求N!

你自己测试输入1,2,3,4答案都没问题,但是很多人会忘记测试输入0, 而0!=1。

即当你Wrong Answer的时候就是说会有一些你没考虑完全的输入导致错误产生。

建议点击题目标题旁边的查看答案或题解和正确通过的代码比较一下,看什么情况下的数据输入和正确答案不一样。

 

如果才能将代码修改正确并通过题目?

1、根据不同的返回结果去对应检查修改自己的代码

2、点击查看答案,查看其他同学的正确通过的代码

3、将自己的代码和正确的代码同时运行然后比较多组测试数据,看看哪里不一致,再排除错误原因。

 

对数器让你从菜鸟变成...

登录查看完整内容


登录后发布评论

36 条评论
zgtari
2024年3月31日 20:28

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
  int n;
  cin>>n;
  int a[10];
  for(int i=0;i<n;i++){
  cin>>a[i];
  }
  for(int i=0;i<n;i++){
    for(int j=i;j<n;j++){
    if(a[i]==a[j]){
        int b=j;
        while(b<n){
        a[b]=a[++b];
        }
    }
   }
 }
for(int i=0;i<n;i++){
cout<<a[i]<<' ';
}
system("pause");
return 0;


}

赞(0)

snake : 回复 zgtari: 这个哪个题呀

2024年3月31日 22:55
王友
2024年3月25日 23:53

求助p1334最大连续子序列

明明用例都过,就只有75%通过,实在不知道哪个地方缺失了约束

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int N;
    int *p = NULL;
    int i,j;
    while(scanf("%d",&N)!=EOF)
    {
        int max_sum = 0;
        int this_sum = 0;
        int max_sum1 = 0;
        int count = 0;
        p = (int *)malloc(sizeof(int)*N);
        getchar();
        for(i=0;i<N;i++)
        {
            scanf("%d",&p[i]);
        }
        max_sum = p[0];
        max_sum1 = p[0];
        for(i=0;i<N;i++)
        {
            this_sum = this_sum+p[i];
            if(this_sum<0)
            {
                this_sum = 0;
                count++;
            }
            if(this_sum>max_sum)
                max_sum = this_sum;
        }
        if(count==N)
        {
            for(i=0;i<N;i++)
            {
                if(p[i]>max_sum1)
                    max_sum1 = p[i];
            }
            printf("%d\n",max_sum1);
        }
        else
            printf("%d\n",max_sum);
        free(p);
    }
    return 0;
}

赞(0)

snake : 回复 王友: 注意题目给的数据范围,2^63这个数已经超出int范围了

2024年3月26日 00:49

王友 : 回复 snake: 终于解决了,真是这样,谢谢大佬!!

2024年3月26日 08:51
中国人民万岁
2024年3月15日 14:09

求助p1334最大连续子序列

明明用例都过,就只有75%通过,蒟蒻求救

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;

    while (cin >> n) {
        //结束判断
        if (n == 0) {
            cout <<0<<" "<<0<<" "<<0<< endl;
            break;
        }

        //全负标志
        int flag = 0;
        int arr[n];

        for (int i = 0; i < n; i++) {

            cin >> arr[i];

            //判断是否非负
            if (arr[i] > 0) {
                flag = 1;
            }
        }

        //全负输出
        if (flag == 0) {
            cout << 0 << " " << arr[0] << " " << arr[n - 1] << endl;
            continue;
        }

        //非全负
        int dp[n];
        dp[0] = arr[0];
        int maxx = 0;
        int e = 0;
        //only one elem
        if (n == 1) {
            cout << arr[0] << " " << arr[0] << " " << arr[0] << endl;
            continue;
        }
        for (int i = 1; i < n; i++) {
            if (dp[i - 1] > 0) {
                dp[i] = arr[i] + dp[i - 1];
            } else {
                dp[i] = arr[i];
            }
            if (dp[i] > maxx) {
                e = i;
            }
            maxx = max(maxx, dp[i]);
        }
        int s = e;
        int tmp = maxx;
        while (tmp != 0) {
            tmp -= arr[s--];
        }
        cout << maxx << " " << arr[s + 1] << " " << arr[e] << endl;
    }
    return 0;
}

赞(0)

snake : 回复 中国人民万岁: 当K为0时,输入结束,该用例不被处理。注意审题,样例数据没有通过。

2024年3月15日 17:00

中国人民万岁 : 回复 snake: 可是我n==0那个括号里全删掉只剩break还是错的55555,大佬救救

2024年3月15日 20:35

snake : 回复 中国人民万岁: 删掉之后你跑一下题目给的样例数据,就可以发现有数据对不上了

2024年3月15日 21:44
千羽墨1
2024年3月13日 14:43

#include <stdio.h>
#include <string.h>
int main(){
    char s[10];
    scanf("%s",s);
    int i,sum=0,len=strlen(s);
    for(i=2;i<len;i++){
        sum=sum*16;
        if(s[i]>='0'&&s[i]<='9'){
            sum+=s[i]-'0';
        }
        if(s[i]>='a'&&s[i]<='f'){
            sum+=(s[i]-'a'+10);
        }
        if(s[i]>='A'&&s[i]<='F'){
            sum+=(s[i]-'A'+10);
        }
    }
         printf("%d\n",sum);
         return 0;
}

十六进制转十进制 通过率只有50%什么原因

赞(0)

snake : 回复 千羽墨1: 注意审题,(注意可能存在的一个测试用例里的多组数据),需要用多组输入

2024年3月13日 15:10
thjd_m
2024年3月12日 22:34

题目是1296,数据通过率33%

 #include <bits/stdc++.h>
using namespace std;

stack<int> st;

int main(){
    char s[105],ans[105]={'\0'};
    while(cin>>s){
        int len=strlen(s);
        for(int i=0;i<len;i++){
            if(s[i]=='('){
                //将左括号的位置压入栈中而不是左括号
                st.push(i);
                ans[i]=' ';
            }
            else if(s[i]==')'){
                if(!st.empty()){
                    st.pop();
                    ans[i]=' ';
                }else
                    ans[i]='?';
            }
            else
                ans[i]=' ';
        }
        int k;
        while(!st.empty()){
            k=st.top();
            ans[k]='$';
            st.pop();
        }
        cout<<s<<endl;
        cout<<ans<<endl;
    }
    return 0;
}
 

赞(0)

snake : 回复 thjd_m: ()(aa)((())

2024年3月12日 23:48

thjd_m : 回复 snake: 在IDE里正确诶

2024年3月13日 15:30

snake : 回复 thjd_m: ans每次计算都需要重新初始化,否则多组输入会受到影响

2024年3月13日 15:36
为欢几何
2024年3月10日 11:42

下面这个通过率只有50%是怎么回事呀,题目是1259

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串(注意可能存在的一个测试用例里的多组数据)。

#include<bits/stdc++.h>
using namespace std;
int main(){
char s[1005];
while(gets(s)){
int ans=0;
int len=strlen(s);
    for(int i=2;i<len;i++){
        ans*=16;
        if(s[i]>='0'&&s[i]<='9')
            ans+=(s[i]-'0');
        else
            ans+=(s[i]-'A')+10;
    }
        cout<<ans<<endl;
    }
    return 0;
}

赞(0)

snake : 回复 为欢几何: 使用gets函数,需要注意空行的问题,加个判断,如果字符串s为空就不要输出

2024年3月10日 12:32
18695830650
2024年3月5日 15:15

为啥数据通过率只有60%

赞(0)

admin : 回复 18695830650: 哪一道题呢?

2024年3月5日 15:35

周小黑02477 : 回复 admin: 首字母大写这题照着n诺视频敲得,60%通过率 #include<stdio.h> #include<string.h> #include<iostream> using namespace std; int main() { char x[105]; while (gets(x)) { int len = strlen(x); int flag = 0; for (int i = 0; i < len; i++) { if (flag == 0 && x[i] != ' ') { if (x[i] >= 'a' && x[i] <= 'z') x[i] -= 32; flag = 1; } else if (x[i] == ' ') flag = 0; } cout<<x<<endl; } return 0; }

2024年3月6日 11:15

周小黑02477 : 回复 周小黑02477: #include<stdio.h> #include<string> #include <stdlib.h> #include<iostream> #include<string.h> using namespace std; int main() { char x[105]; while (gets(x)) { int len = strlen(x); int flag = 0; for (int i = 0; i < len; i++) { if (flag == 0 && x[i] != ' ') { if (x[i] >= 'a' && x[i] <= 'z') x[i] -= 32; flag = 1; } else if (x[i] == ' ') { flag = 0; } } cout << x << endl; } return 0; }

2024年3月6日 11:16

snake : 回复 周小黑02477: 增加对'\t'的判断if (flag == 0 && s[i] != ' ' && s[i] != '\t' )和else if (s[i] == ' ' || s[i] == '\t')

2024年3月6日 11:47

周小黑02477 : 回复 snake: nb,感谢

2024年3月6日 14:55
mr_lin
2023年2月9日 11:22

#include <iostream>
using namespace std;

int main()
{
   //==========================================代码展示(1):====================================

     /*int a[105][105];
    int b[105][105];
    int i,j,k,n;      //输入一个n行m列的矩阵
    scanf("%d %d",&n,&k);
    for(i=0;i<n;i++)
        {
            for(j=0;j<k;j++)
        scanf("%d",&a[i][j]);
        }
    for(i=0;i<n;i++)
    {
        for(j=0;j<k;j++)
        {
            b[j][k-i+1]=a[i][j];
        }

    }

   for(i=0;i<n;i++)
        {
        for(j=0;j<k;j++)
        {
        printf("%d ",b[i][j]);
        }
    printf("\n");
}

 

我这个和你视频敲的一样的,一个矩阵顺时针旋转90度,为什么我的就错了呢?

赞(0)

admin : 回复 mr_lin: b[j][k-i+1]=a[i][j]; 这里改成减一 b[j][k-i-1]=a[i][j];

2023年2月9日 12:29

mr_lin : 回复 admin: 为什么呢?答案对了,但是自己找规律的时候好像不对呀

2023年2月10日 10:50

admin : 回复 mr_lin: 那就需要在纸上多画一下,可能哪里细节看错了

2023年2月10日 19:09
Dear_Mr_He
2022年9月11日 12:17

请问为啥错误数据对比是一样的还是报Presentation Error呢?

赞(0)

admin : 回复 Dear_Mr_He: Presentation Error一般是空格的数量不对,刚刚看你的代码已经改对了

2022年9月11日 20:02

Dear_Mr_He : 回复 admin: 对,我是直接在在线代码测试平台上写的,给的数据对比左对齐了,没有空格,看不出来,放到本地编译器输入就看出来我哪里写错了。

2022年9月11日 20:13
18370636086
2021年3月1日 11:49

想问下Python能引用第三方库吗,我试了下,然后就Runtime Error了indecision

赞(0)

admin : 回复 18370636086: 不能哈,考试不准使用三方库的

2021年3月1日 22:32
远方一伟
2021年1月11日 13:37

请问http://www.noobdream.com/DreamJudge/Issue/page/1647/你们这个题是不是样例有问题啊,我做了好久都是只过了50%,参考了网上很多版本的当年答案也都是只过了50%,包括当年已经上岸的学生。而且这个题没有题解,也不知道到底怎么样才能过,如果确定样例没问题可以给一个参考代码吗?2019年我就这一个题没过了,而且还是第一题最简单的一个,我都快怀疑人生了

赞(0)

admin : 回复 远方一伟: 这个题很多人通过了的,可以看其他同学的代码

2021年1月11日 20:24
远方一伟
2021年1月10日 17:01

怎么我在DEV就能运行出来,交到这上面就编译错误呢?

赞(0)

admin : 回复 远方一伟: 可以点击结果查看具体错误原因

2021年1月10日 18:10