c++投票

学校推出10名歌手,校学生会想知道这10名歌手受欢迎的程度,设计一个投票箱,让每一个同学给自己喜欢的歌手投票,为了方便,校学生会把10名歌手用1-10进行编号,这样,同学们只要用编号进行投票,现在校学生会找到你,让你帮忙统计一下每个歌手获得的票数。

【输入】两行,第一行是一个整数n,表示参加投票的人数,第二行是n个整数,每个数的取值的范围为[1-10],表示喜欢的歌手

【输出】两行,第一行为1-10个数字,表示选手编号,第二行10个数字表示各个选手获得的票数

代码如下

#include<iostream>
using namespace std;
int main(){
	int a[500]={};
	int n=0,temp=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>temp;
		a[temp]++;
	}
	cout<<"1 2 3 4 5 6 7 8 9 10"<<endl;
	for(int i=1;i<=10;i++){
		cout<<a[i]<<" ";
	}
    return 0;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 C 语言实现 KNN(K-Nearest Neighbors)的投票算法。下面是一个简单的示例代码,用于对给定测试样本进行分类: ```c #include <stdio.h> #include <math.h> // 计算欧氏距离 double euclideanDistance(double *point1, double *point2, int dimensions) { double distance = 0.0; for (int i = 0; i < dimensions; ++i) { distance += pow((point1[i] - point2[i]), 2); } return sqrt(distance); } // KNN投票算法 int knnVote(double *trainingSet[], int *labels, int trainingSize, int dimensions, double *testPoint, int k) { // 计算测试样本与训练样本的距离 double distances[trainingSize]; for (int i = 0; i < trainingSize; ++i) { distances[i] = euclideanDistance(trainingSet[i], testPoint, dimensions); } // 根据距离排序,找出 K 个最近的邻居 int sortedIndices[trainingSize]; for (int i = 0; i < trainingSize; ++i) { sortedIndices[i] = i; } for (int i = 0; i < trainingSize - 1; ++i) { for (int j = 0; j < trainingSize - i - 1; ++j) { if (distances[j] > distances[j + 1]) { // 通过冒泡排序交换距离和索引 double tempDist = distances[j]; distances[j] = distances[j + 1]; distances[j + 1] = tempDist; int tempIndex = sortedIndices[j]; sortedIndices[j] = sortedIndices[j + 1]; sortedIndices[j + 1] = tempIndex; } } } // 统计 K 个最近邻居的类别 int votes[10] = {0}; // 假设类别标签为 0-9 for (int i = 0; i < k; ++i) { int label = labels[sortedIndices[i]]; votes[label]++; } // 返回票数最多的类别 int maxVotes = 0; int maxLabel = -1; for (int i = 0; i < 10; ++i) { if (votes[i] > maxVotes) { maxVotes = votes[i]; maxLabel = i; } } return maxLabel; } int main() { // 训练样本和标签 double trainingSet[5][2] = {{1.0, 2.0}, {2.0, 1.0}, {5.0, 8.0}, {6.0, 9.0}, {8.0, 7.0}}; int labels[5] = {0, 0, 1, 1, 1}; // 测试样本 double testPoint[2] = {4.0, 6.0}; // KNN 参数 int k = 3; int trainingSize = 5; int dimensions = 2; // 进行分类 int predictedLabel = knnVote(trainingSet, labels, trainingSize, dimensions, testPoint, k); // 打印结果 printf("Predicted Label: %d\n", predictedLabel); return 0; } ``` 在上面的示例代码中,训练样本的特征值存储在二维数组 `trainingSet` 中,对应的标签存储在整型数组 `labels` 中。测试样本的特征值存储在一维数组 `testPoint` 中。你可以根据实际情况修改这些数据。K 值由变量 `k` 控制。 代码中使用欧氏距离计算样本之间的距离,然后根据距离排序,选取 K 个最近邻居,并统计各个类别的票数,最后返回票数最多的类别作为预测结果。 注意:这只是一个简单的示例,实际使用时你可能需要根据具体问题对代码进行适当的修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值