题目是CCF的2020-12-2 的《期末预测之最佳阈值》,还有就是为什么我把M定义成100000的时候,就无法在VS2013上运行,会直接出现请按任意键继续。
#include <stdio.h>
#define M 10000
int main()
{
int y[M], result[M], m, num[M] = {0}; // num是用来统计每个阈值的正确情况。
scanf("%d", &m);
int i, j;
//输入 m个同学的安全指数y与挂科情况result
for (i = 0; i < m; i++){
scanf("%d %d", &y[i], &result[i]);
}
//将第i个阈值y[i]分别和 m个同学的安全指数相比较。
for (i = 0; i < m; i++){
for (j = 0; j < m; j++){
if (y[j] >= y[i] && result[j] == 1){ //若安全指数大于等于阈值,并且result=1表明预测正确一次,让num[i]++,用num[i]来确定i个阈值的正确次数。
num[i]++;
}
else{
if (y[j] < y[i] && result[j] == 0){ ////若安全指数小于阈值,并且result=0表明预测正确一次,
num[i]++;
}
}
}
}
int max = num[0], k = 0;
for (i = 0; i < m; i++){
if (max <= num[i]){
max = num[i]; //找出num[i]里面那个阈值预测得最多。并记录下对应的i。
k = i;
}
}
printf("%d", y[k]);
return 0;
}