CCF-CSP真题202006-1《线性分类器》

 题目:

CCF-CSP真题202006-1《线性分类器》_第1张图片

CCF-CSP真题202006-1《线性分类器》_第2张图片

CCF-CSP真题202006-1《线性分类器》_第3张图片

 C语言解答:

#include 
#define M 1000000
int x[M],y[M],u0[M],u1[M],u2[M];
int main(){
	int n,m,i,j,z;
	int countA=0,countB=0;
	int count1,count2,count3,count4;
	char type[1000];
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d%d%s",&x[i],&y[i],&type[i]);
		if(type[i]=='A'){
			countA++;
		} 
		if(type[i]=='B'){
			countB++;
		}
	}
	for(j=1;j<=m;j++){
		scanf("%d%d%d",&u0[j],&u1[j],&u2[j]);
		
	}
	//分两种情况,A在线上面B在线下面---B在线上面A在线下面 
	for(j=1;j<=m;j++){
		count1=0,count2=0,count3=0,count4=0;
		for(i=1;i<=n;i++){
			z=u0[j]+u1[j]*x[i]+u2[j]*y[i];
			//A在线上面B在线下面
			if(type[i]=='A'&&z>0){
				count1++;
			}
			if(type[i]=='B'&&z<0){
				count2++;
			}
			//B在线上面A在线下面
			if(type[i]=='A'&&z<0){
				count3++;
			}
			if(type[i]=='B'&&z>0){
				count4++;
			}
		}
		if((count1==countA)&&(count2==countB)){
			printf("Yes\n");
		}
		else if((count3==countA)&&(count4==countB)){
			printf("Yes\n");
		}
		else{
			printf("No\n");
		}
		
	}
	
	
	return 0;
} 

运行结果:

你可能感兴趣的:(CCF-CSP真题,c语言,算法,c++,蓝桥杯)