题解 | #两条斜线#

两条斜线

https://ac.nowcoder.com/acm/problem/18951

两条直线的斜率k已经确定,根据y=kx+b现在最重要的事情是找出这两条直线的b
而斜率为1的直线,b就等于y轴坐标减去z轴坐标,设为k1
斜率为-1的直线,b就等于x轴坐标加上y轴坐标,设为k2
每次确定k1和k2的值,用两个for循环,因为k1和k2的排列组合有n*n种,每次得到一种新的就遍历以前的点有多少个会分布在这上面,寻找最大的那个数即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,x[10010],y[10010],i,j,ma=-1,su=0,k1,k2,k;
    cin>>n;//两条直线的斜率已经确定,根据y=kx+b现在最重要的事情是找出这两条直线的b
    for(i=0;i<n;i++)cin>>x[i];
    for(i=0;i<n;i++)cin>>y[i];
    for(i=0;i<n;i++)
    {
        k1=x[i]+y[i];
        for(j=0;j<n;j++)
        {
            k2=y[j]-x[j];
            su=0;
            for(k=0;k<n;k++)
            {
                if(x[k]+y[k]==k1||y[k]-x[k]==k2)su++;
            }
            if(su>ma)ma=su;
        }
    }
    cout<<ma;
}


全部评论
超时了
点赞 回复 分享
发布于 03-31 13:40 四川
这算法的复杂度太高了啊哥们,怎么优化一下
点赞 回复 分享
发布于 2023-10-31 19:29 重庆

相关推荐

缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-05 04:14
已编辑
真烦好烦真烦:看着感觉好强啊,这都过不了吗
投递字节跳动等公司7个岗位 面试中的破防瞬间
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务