一面
2022.8.19
-
问项目
-
做一道数学题:给一个多项式式子,化成二次型表示
f ( x 1 , x 2 , x 3 ) = ( x 1 − 1 ) 2 + ( x 2 − 2 ) 2 + ( x 3 − 3 ) 2 + ( x 1 − x 2 ) 2 + ( x 2 − x 3 ) 2 x 1 , x 2 , x 3 ∈ 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)=(x1−1)2+(x2−2)2+(x3−3)2+(x1−x2)2+(x2−x3)2x1,x2,x3∈R- 将该函数写成矩阵和向量的二次型形式。
- 该函数取最小值的充分必要条件是?
-
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; }