#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
int x[15][3],y[4][2];
float w[3],w1[3];
float m,d;
int i,j,k,a,b;
void chushihua()
{
for(i=0; i<15; i++)
//for(j=0;j<3;j++)
x[i][2]=1;
for(i=0; i<3; i++)
w1[i]=1;
x[0][0]=180;
x[0][1]=80;
x[1][0]=-158;
x[1][1]=-46;
x[1][2]=-1;
x[2][0]=184;
x[2][1]=78;
x[3][0]=-156;
x[3][1]=-45;
x[3][2]=-1;
x[4][0]=178;
x[4][1]=75;
x[5][0]=182;
x[5][1]=74;
x[6][0]=190;
x[6][1]=81;
x[7][0]=-158;
x[7][1]=-46;
x[7][2]=-1;
x[8][0]=-155;
x[8][1]=-42;
x[8][2]=-1;
x[9][0]=-159;
x[9][1]=-44;
x[9][2]=-1;
x[10][0]=179;
x[10][1]=63;
x[11][0]=-156;
x[11][1]=-47;
x[11][2]=-1;
x[12][0]=-157;
x[12][1]=-48;
x[12][2]=-1;
x[13][0]=179;
x[13][1]=70;
x[14][0]=-154;
x[14][1]=-50;
x[13][2]=-1;
y[0][0]=150;
y[0][1]=40;
y[1][0]=180;
y[1][1]=76;
y[2][0]=153;
y[2][1]=45;
y[3][0]=185;
y[3][1]=75;
}
int test()
{
int b=0;
for(i=0; i<15; i++)
{
d=0;
for(j=0; j<3; j++)
{
m=x[i][j]*w1[j];
d=d+m;
}
if(d>0) b++;
}
if(b==15) return 1;
else return 0;
}
void ganzhiqi()
{
int flag=0;
while(flag==0)
{
for(i=0; i<15; i++)
{
d=0;
for(j=0; j<3; j++)
{
m=x[i][j]*w1[j]; //temp=x[i][j]*w[j];
d=d+m;
}
if(d>0)
{
for(k=0; k<3; k++)
w1[k]=w[k];
}
else
{
for(k=0; k<3; k++)
{
w1[k]=w[k]+x[i][k];
w[k]=w1[k];
}
}//else
}//for
flag=test();
}
}
int main()
{
chushihua();
ganzhiqi();
printf("已知的模式向量:\n");
printf("篮球运动员:\n");
for (i=0; i<15; i++)
{
if(x[i][0]>0)
printf("x[%d]: %d %d\n",i,x[i][0],x[i][1]);
}
printf("体操运动员:\n");
for (i=0; i<15; i++)
{
if(x[i][0]<0)
printf("x[%d]: %d %d\n",i,-x[i][0],-x[i][1]);
}
printf("待分类的模式向量:\n");
for (i=0; i<4; i++)
{
printf("y[%d]: %d %d\n",i,y[i][0],y[i][1]);
}
for(i=0; i<4; i++)
{
d=0;
for(j=0; j<3; j++)
{
m=y[i][j]*w1[j];
d=d+m;
}
if(d>0) printf("%d号运动员属于篮球运动员\n",i);
else printf("%d号运动员属于体操运动员\n",i);
}
return 0;
}