CCF试题------期末预测之最佳阈值的C++代码

在这里插入图片描述
这个题目我自己写的代码如下,但是运行错误,希望大家可以帮忙找错,之后有时间回来继续调试修改。

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
    int num;
	cin>>num;  //一共要几组数据
	int y[num], result[num];  //定义数组,这些数组的大小都是num
	int i=0;
	int num2 = num;

    //输入数据
	while(num--){
		cin>>y[i];
		getchar();
        cin>>result[i];
		i++;
	}
    //定义一个集合存放阈值。用集合的原因是阈值不能重复
	set<int> edge;
    //将可能的阈值存放在集合中
	for(int i=0; i<num2; i++){
		edge.insert(y[i]);
	}
    //定义集合迭代器
	set<int>::iterator it;
	it = edge.begin();
    int edgen = edge.size();

    int pred[edgen][num];  //预测值为二维数组,因为每个阈值都对应一行

	int newedge[edgen];  //这个数组是集合数组
    //迭代将迭代器中的阈值放入相同大小的数组中
	for(int i=0; i<edgen; i++, it++){
        newedge[i] = *it;
	}
    //预测值的赋值,这里需要计算,阈值从newedge[]中选择,一个阈值要和多个yi比较,当yi<阈值则predi=0,否则predi=1
	/*第一个for遍历阈值数组newedge[]
	  第二个for遍历y数组y*/
	for(int i=0; i<edgen; i++){
		for(int j=0; j<num2; j++){
            if(y[j] < newedge[i]){
				pred[i][j] = 0;
			}
			else{
				pred[i][j] = 1;
			}
		}
	}
    //比较pred与result的大小,数组x中存放每个的正确次数
    int x[edgen] = {0};
	for(int i=0; i<edgen; i++){
		for(int j=0; j<num2; j++){
			if(pred[i][j] == result[j]){
				x[i] = x[i]+1;
			}
		}
	}
    //寻找最大值下标
	int maxnum = 0;
	for(int i=0; i<edgen; i++){
		if(x[i] >= x[maxnum]){
			maxnum = i;
		}
	}
	//输出最佳阈值
	cout<<endl<<newedge[maxnum];
	system("pause");
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值