这是ccf2020年的线性分类器,题目是图片我放不上来,等一下我看能不能放在评论区,我用数组存放的数据,一位博主是用结构体存放的数据,我想知道为什么我的运行结果不对,希望能帮忙修改一下。
题目
我的代码
#include<stdio.h>
int main()
{
int n,m,i,j,a1,a2,a3,sum1,sum2,sum3,sum4,temp;
int arr1[1010][2];
char arr2[1010][1];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d%d%c%c",&arr1[i][0],&arr1[i][1],&arr2[i][0],&arr2[i][0]);
}
for(j=0;j<m;j++)
{
scanf("%d %d %d",&a1,&a2,&a3);
sum1=sum2=sum3=sum4=0;
for(i=0;i<n;i++)
{
temp=a1+arr1[i][0]*a2+arr1[i][1]*a3;
if(arr2[i][0]=='A')
{
if(temp>0)
sum1++;
if(temp<0)
sum2++;
}
if(arr2[i][0]=='B')
{
if(temp>0)
sum3++;
if(temp<0)
sum4++;
}
}
if(sum1+sum4==n||sum2+sum3==n)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
竹春九月博主的代码
#include<stdio.h>
struct Node{
int x,y;
char z;
};
int main()
{
int n,m,i,j,a,b,c,temp;
int A1,A0,B1,B0;
scanf("%d%d",&n,&m);
struct Node s[n];
for(i=0;i<n;i++) scanf("%d%d%c%c",&s[i].x,&s[i].y,&s[i].z,&s[i].z);//注意输入有个空格字符
for(i=0;i<m;i++){
scanf("%d%d%d",&a,&b,&c);//读取每条线的a,b,c
A1=0;A0=0;B1=0;B0=0;
for(j=0;j<n;j++){
temp=a+b*s[j].x+c*s[j].y;
if(temp>0&&s[j].z=='A') A1++;
if(temp<0&&s[j].z=='A') A0++;
if(temp>0&&s[j].z=='B') B1++;
if(temp<0&&s[j].z=='B') B0++;
}
if(A1+B0==n||A0+B1==n) printf("Yes\n");
else printf("No\n");
}
return 0;
}
版权声明:本文为CSDN博主「竹春九月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46177519/article/details/115212682