CCF小白刷题之路---202006-1 线性分类器(C/C++ 100分)

简介: CCF小白刷题之路---202006-1 线性分类器(C/C++ 100分)

一、题目描述
image.png
image.png
image.png
image.png
image.png
二、代码实现

#include<iostream>
using namespace std;
//用结构体来表示每一个点
struct Node{
    int x;
    int y;
    char type;
};

int main()
{
    Node node[1005];
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>node[i].x>>node[i].y>>node[i].type;
    }
    int theta0,theta1,theta2;
    for(int i=0;i<m;i++)
    {
        cin>>theta0>>theta1>>theta2;
        //把点带入直线方程,如果值大于0,则记为1,小于0则记为0,
        //同类型的点带入直线方程应该具有相同的正负性,以此来判断直线是否符合标准
        int a[1005]={0};
        int b[1005]={0};
        int a_i=0,b_i=0;
        for(int j=0;j<n;j++)
        {
            if(node[j].type=='A')
            {
                if(theta0 + theta1 * node[j].x + theta2 * node[j].y > 0) a[a_i++] = 1;
                else a[a_i++] = 0;
            }
            else
            {
                if(theta0 + theta1 * node[j].x + theta2 * node[j].y > 0) b[b_i++] = 1;
                else b[b_i++] = 0;
            }
        }
        //标志符flag判断直线是否符合标准
        bool flag = true;
        for(int j=0;j<a_i-1;j++)
        {
            if(a[j]!=a[j+1])
            {
                flag = false;
                break;
            }
            else continue;
        }
        for(int j=0;j<b_i-1;j++)
        {
            if(b[j]!=b[j+1])
            {
                flag = false;
                break;
            }
            else continue;
        }
        if(flag==true) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}
相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
270 0
|
1月前
|
人工智能 算法 BI
【算法】 线性DP(C/C++)
【算法】 线性DP(C/C++)
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
6月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
84 1
|
6月前
|
存储 C++ 索引
C++中的线性结构
C++中的线性结构
58 0
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
303 0
|
6月前
|
算法 搜索推荐 程序员
C++标准库算法指南:从线性到复杂度 — 选择最佳工具
C++标准库算法指南:从线性到复杂度 — 选择最佳工具
119 0
|
6月前
|
C++
C++刷题ACM输入数组
C++刷题ACM输入数组
70 0