问题描述
| 试题编号: | 202006-1 |
| 试题名称: | 线性分类器 |
| 时间限制: | 1.0s |
| 内存限制: | 512.0MB |
| 问题描述: |
|
#include<iostream>
#include<algorithm>
using namespace std;
struct Node{
int x,y;
char id[2];
}node[1010];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>node[i].x>>node[i].y>>node[i].id;
int q1,q2,q0;
for(int i=0;i<m;i++){
cin>>q0>>q1>>q2;
int flag=1;
int f1=-1;
int f2=-1;
for(int j=0;j<n;j++){
int t=(q0+q1*node[j].x+q2*node[j].y)>0?1:0;
if(node[j].id[0]=='A'){
if(f1==-1){
f1=t;
}
else if(f1!=t){
flag=0;
break;
}
}
else if(node[j].id[0]=='B'){
if(f2==-1){
f2=t;
}
else if(f2!=t){
flag=0;
break;
}
}
if(f1==f2){
flag=0;
break;
}
}
printf("%s\n",flag?"Yes":"No");
}
}

该程序实现了一个线性分类器,用于解决给定数据集上的二分类问题。输入包含n个样本的坐标(x, y)和类别标识(A或B),通过线性函数(q0 + q1*x + q2*y)判断样本属于哪一类,并检查所有相同类别样本是否都被正确分类。程序会输出'Yes'或'No',表示分类是否成功。


9893

被折叠的 条评论
为什么被折叠?



