链接到错误提交: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个节目!!
答案 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.
不修复此操作会调用未定义的行为。因此,两个不同的编译器(或运行)可能会产生不同的结果。