字节跳动06月20号 ES部门笔试

字节跳动06月20号 ES部门笔试  第五题猜数游戏: n个棋子(相当于n个坐标点) 是否存在x=a 或者 y=b直线  使所有的坐标点位于这俩直线上(满足一条直线就行)
用的回溯法 , 笔试时候AC80%
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

//判断这个a b值是否满足条件1
bool is_valid(int a,int b,vector<vector<int> > &points)
{
    int n = points.size();
    for(int i=0;i<n;i++)
    {
        if(points[i][0]!=a && points[i][1]!=b)
        {
            return false;
        }
    }
    return true;
}
//回溯  递归
void helper(int x,int y,vector<vector<int> > &res,int &n,vector<vector<int> > &points)
{
    if(x>=n || y>=n)
    {
        return;
    }
    if(is_valid(points[x][0],points[y][1],points))
    {
        vector<int> temp0;
        temp0.push_back(points[x][0]);
        temp0.push_back(points[y][1]);
        res.push_back(temp0);
        helper(x,y+1,res,n,points);
        //return;
    }
    else
    {
        helper(x,y+1,res,n,points);
    }
    return;
}
// 对满足条件的 a  b 进行排序 选出  a*1000+b最小的
bool cmp(const vector<int>& a,const vector<int>& b)
{
    return a[2] < b[2];
}
int main()
{
    int n;
    cin>>n;
    vector<vector<int> >points(n,vector<int>(2,0));
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<2;j++)
        {
            cin>>points[i][j];
            if (cin.peek() == ',')     
			{
				cin.get();               
			}
			if (cin.peek() == '\n')       
			{
				break;
			}
        }
    }
    vector<vector<int> > res;
    for(int i=0;i<n;i++)
    {
        helper(i,0,res,n,points);

    }
    if(res.empty())
    {
        cout<<-1<<','<<" "<< -1<<endl;
        return 0;
    }
    for(int i=0;i<res.size();i++)
    {
        int min_val = res[i][0]*1000+res[i][1];
        res[i].push_back(min_val);
    }
    sort(res.begin(),res.end(),cmp);
    cout<<res[0][0]<<','<<" "<<res[0][1]<<endl;
    return 0;

}



#字节跳动笔试##字节跳动##笔试题目#
全部评论
同80%,我的是分情况讨论,满屏的if else
点赞 回复 分享
发布于 2020-06-20 22:30
这题直接三个点求解遍历不行么?
点赞 回复 分享
发布于 2020-06-20 22:46
想问一下ac多少能过昂
点赞 回复 分享
发布于 2020-06-24 22:31
这次题不难,一共6道题,应该答对四道题以上就可以进入面试
点赞 回复 分享
发布于 2020-06-24 22:32

相关推荐

程序员鼠鼠_春招版:都很烂大街,rpc也基本没人问,考研吧,不然就包装一段实习再去
点赞 评论 收藏
分享
2024-12-29 15:37
已编辑
西华大学 图像识别
程序员牛肉:去不了,大厂算法卡学历吧
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客企业服务