【面试】2022.08——地平线自动驾驶规控岗一面二面

这篇博客记录了一次面试经历,包含两部分:一是将给定的多项式函数转化为二次型,并找出取最小值的条件;二是编程实现求点到线段投影的坐标。面试者在第二部分遇到困难,未能完成任务。博客讨论了矩阵与向量的二次型表示以及回溯法在解决路径问题上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一面

2022.8.19

  • 问项目

  • 做一道数学题:给一个多项式式子,化成二次型表示
    f(x1,x2,x3)=(x1−1)2+(x2−2)2+(x3−3)2+(x1−x2)2+(x2−x3)2x1,x2,x3∈R f\left(x_1, x_2, x_3\right)=\left(x_1-1\right)^2+\left(x_2-2\right)^2+\left(x_3-3\right)^2+\left(x_1-x_2\right)^2+\left(x_2-x_3\right)^2\\ x_1, x_2, x_3 \in \mathbf{R} f(x1,x2,x3)=(x11)2+(x22)2+(x33)2+(x1x2)2+(x2x3)2x1,x2,x3R

    • 将该函数写成矩阵和向量的二次型形式。
    • 该函数取最小值的充分必要条件是?
  • coding环节:已知一条线段两端点坐标A,B以及一点C,求点C到线段AB的投影点坐标。

  • 意向地

  • 职业规划

二面-终止(手撕没撕出来)

2022.8.26

在这里插入图片描述

25min,没写出来,直接流程终止

  • 使用邻接矩阵的方式

    #include<iostream>
    #include<vector>
    #include<string>
    #include <queue>
    #include <algorithm>
    
    using namespace std;
    
    vector<vector<int>>adjacency_matrix(vector<vector<int>>graph){
        int n = graph.size();
        vector<vector<int>>mat(n,vector<int>(n,0));
        for(int i=0;i<n;i++){
            mat[graph[i][0]][graph[i][1]]=graph[i][2];
        }
        return mat;
    }
    int sum=0;
    vector<int>res;
    void backtracking(vector<vector<int>>mat,int start,int end){
        if(start==end){
            res.push_back(sum);
            return;
        }
        if(start==0)return;
        for(int i=0;i<mat[start].size();i++){
            if(mat[start][i]==0)continue;
            sum+=mat[start][i];
            backtracking(mat,i,end);
            sum-=mat[start][i];
        }
    }
    
    int main(){
        vector<vector<int>>graph ={{1,2,3},{1,3,2},{1,4,1},{2,5,2},{3,6,1},{4,6,4},{4,5,3},{6,5,3}};
        vector<vector<int>>adj = adjacency_matrix(graph);
        //打印邻接矩阵
    //    for(int i=0;i<adj.size();i++){
    //        for(int j=0;j<adj[i].size();j++){
    //            cout<<adj[i][j]<<' ';
    //        }
    //        cout<<endl;
    //    }
        backtracking(adj,1,5);
        sort(res.begin(),res.end());
        for(int i=0;i<res.size();i++){
            cout<<res[i]<<' ';
        }
       return 0;
    }
    
    
  • 使用邻接表的方式

    #include<iostream>
    #include<vector>
    #include<string>
    #include <queue>
    #include <algorithm>
    
    using namespace std;
    
    
    vector<vector<pair<int,int>>>adjacency_list(vector<vector<int>>graph){
        int n = graph.size();
        vector<vector<pair<int,int>>>mat(n);
        for(int i=0;i<n;i++){
            mat[graph[i][0]].push_back({graph[i][1],graph[i][2]});
        }
        return mat;
    }
    int sum=0;
    vector<int>res;
    void backtracking(vector<vector<pair<int,int>>> mat,int start,int end){
        if(start==end){
            res.push_back(sum);
            return;
        }
        for(int i=0;i<mat[start].size();i++){
            sum+=mat[start][i].second;
            backtracking(mat,mat[start][i].first,end);
            sum-=mat[start][i].second;
        }
    }
    
    int main(){
        vector<vector<int>>graph ={{1,2,3},{1,3,2},{1,4,1},{2,5,2},{3,6,1},{4,6,4},{4,5,3},{6,5,3}};
        vector<vector<pair<int,int>>>adj = adjacency_list(graph);
        backtracking(adj,1,5);
        sort(res.begin(),res.end());
        for(int i=0;i<res.size();i++){
            cout<<res[i]<<' ';
        }
       return 0;
    }
    
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值