区块链技术博客
www.b2bchain.cn

CSP202006-1线性分类器 满分代码

这篇文章主要介绍了CSP202006-1线性分类器 满分代码的讲解,通过具体代码实例进行23299 讲解,并且分析了CSP202006-1线性分类器 满分代码的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=23299

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

CSP202006-1 线性分类器 满分代码

  • 题目
    • 满分代码

题目

CSP202006-1线性分类器 满分代码
CSP202006-1线性分类器 满分代码
CSP202006-1线性分类器 满分代码

满分代码

思路如下:
用结构体表示每一个点,将点带入直线,如果大于0,标志da=1;否则标志da=0。用两个数组分别存放两个类别的标志da,接下来判断两个数组里的数是否一致,如果一致,说明当前直线可以划分这两类数据,输出Yes,否则输出No。

#include<stdio.h> struct Note   //用结构体表示点 { 	int x; 	int y; 	char type;   //当前点的类别 	int da = 0;  //标志da表示当前点带入直线,看是否大于0,若大于0,置为1,否则是0 }; int main() { 	int n,m; 	scanf("%d%d",&n,&m); 	struct Note note[n]; 	for(int i=0;i<n;i++) 		scanf("%d%d %c",&note[i].x,&note[i].y,&note[i].type); 	 	for(int j=0;j<m;j++) 	{ 		int a = 0,b = 0; 		int r0,r1,r2; 		bool xian = true; 		scanf("%d%d%d",&r0,&r1,&r2); 		for(int i=0;i<n;i++)  //遍历每一个点,统计两个类别的数量 		{ 			 			if(note[i].type == 'A') 				a++; 			else 				b++; 			int k = r0 + r1 * note[i].x + r2 * note[i].y; 			if(k>0) 				note[i].da = 1; 			else 				note[i].da = 0; 		} 		int d[a] = {0},e[b] = {0};  //用两个数组分别存放两个类别的标志da 		int p = 0,q = 0; 		for(int i=0;i<n;i++) 		{ 			 			if(note[i].type == 'A') 			{ 				d[p] = note[i].da; 				p++; 			} 			else 			{ 				e[q] = note[i].da; 				q++; 			} 		} 		//接下来判断两个数组里的数是否一致,如果一致,说明当前直线可以划分这两类数据,输出Yes,否则输出No 		int s = d[0]; 		for(int h=0;h<a;h++) 		{ 			if(d[h] == s) 				continue; 			else 			{ 				xian = false; 				break; 			} 				 		} 		int l = e[0]; 		for(int h=0;h<b;h++) 		{ 			if(e[h] == l) 				continue; 			else 			{ 				xian = false; 				break; 			} 		} 		if(xian == false) 			printf("Non"); 		else 			printf("Yesn"); 		xian = true;  	} 	return 0; } 

例题输入:
9 3
1 1 A
1 0 A
1 -1 A
2 2 B
2 3 B
0 1 A
3 1 B
1 3 B
2 0 A

结果:
CSP202006-1线性分类器 满分代码

本文转自互联网,侵权联系删除CSP202006-1线性分类器 满分代码

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » CSP202006-1线性分类器 满分代码
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们