程序中的错误?

时间:2014-04-18 20:17:45

标签: c++ algorithm

链接到错误提交:http://codeforces.com/contest/158/submission/6412916

问题:

  

"获得等于或大于第k位的得分的参赛者   终结者的得分将提前到下一轮,只要   选手获得正面评分..." - 比赛规则的摘录。

     

共有n名参赛者参加了比赛(n≥k)和你   已经知道他们的分数。计算参与者的数量   进入下一轮。

     

输入

     

输入的第一行包含两个整数n和k   (1≤k≤n≤50)由一个空格分隔。

     

第二行包含n个以空格分隔的整数a1,a2,...,an   (0≤ai≤100),其中ai是参与者获得的分数   得到了第i个位置。给定的序列是不增加的(也就是说,对于   所有我从1到n - 1满足以下条件:   AI≥AI + 1)。

     

输出

     

输出前进到下一个的参与者数量   轮。


程序:

#include <iostream>

using namespace std;

int main(){
    int n,k;
    cin>>n>>k;
    int scores[101];

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

        cin>>scores[i];
    }

    int participants =0 ;
    int passingscore = scores[k-1];

    for (int l = 0; l<=n; l++) {             //check each item
        if (scores[l] >= passingscore) {      //check if l'th score is greater than the passing score
            participants+=1;
        }
    }

    if (scores[0] == 0){
        cout << 0;
    }
    else {
        cout<<participants;
    }

    return 0;
}

EDIT :: 现在看来我有一个逻辑错误(参见:http://codeforces.com/contest/158/submission/6413415)。

我找不到它。

更新:发现错误!谢谢您的帮助!我做的第3个节目!!

1 个答案:

答案 0 :(得分:3)

正如Niklas所说,你的编译器应该提供警告,暗示你做错了什么。我已经包含了clang的输出,我觉得它很可读。

[3:27pm][wlynch@watermelon /tmp] clang++ -Wall foo.cc
foo.cc:20:13: warning: variable 'participants' is uninitialized when used here [-Wuninitialized]
            participants+=1;
            ^~~~~~~~~~~~
foo.cc:15:21: note: initialize the variable 'participants' to silence this warning
    int participants ;
                    ^
                     = 0
1 warning generated.

不修复此操作会调用未定义的行为。因此,两个不同的编译器(或运行)可能会产生不同的结果。