阿里的30分钟编程测评,截图献上

今天听几个同学说阿里的测评是TSP,想来不能一样吧,还真是TSP.很遗憾,得了零分,但是很乐意把题共享给大家
#阿里巴巴##笔试题目#
全部评论
Map = [[0,2,3],[2,0,1],[3,1,0]] ans = [([float('inf')]*3)for p in range(3)] start = 0 def findfunc(Node,N,distance):         if N == 0:             if ans[start][Node] > distance:                 ans[start][Node] = distance                 return             return         info = Map[Node]         for ind,each in enumerate(info):             if each != 0:                 findfunc(ind,N-1,distance + each)         return for i in range(3):     start = i     M = findfunc(i,2,0) 深度优先搜索
点赞 回复 分享
发布于 2018-07-18 17:20
TSP是什么意思?
点赞 回复 分享
发布于 2018-07-18 01:53
唉,我是时间过了才写出来的,也没用
点赞 回复 分享
发布于 2018-07-18 05:37
我只做出来一个时间复杂度为n3*m的
点赞 回复 分享
发布于 2018-07-18 10:50
用动态规划做的,dp[i][j][m]=min{dp[i][s][m-1] + map[s][j]}s为j的所有邻居。当然用二维滚那个动数组可以节约一点空间。但是时间复杂度为O(n^3*m),不合要求。。。
点赞 回复 分享
发布于 2018-07-23 23:47
之前图相关的都用的领接数组,这换成了领接矩阵,半天没反应过来,我去。。。。。 #include<iostream> #include<algorithm> #include<fstream> #include<map> #include<vector> #include<string> #include<iostream> using namespace std; void dfs(vector<vector<int>> &path, int s, int e, int v,int &res,int L,int M) {     if (L > M)         return;     if(L==M&&s==e){         res = min(res, v);         return;     }     for (int i = 0; i < path[0].size(); ++i) {         if (path[s][i] != 0)             dfs(path, i, e, v + path[s][i], res, L + 1, M);     } } vector<vector<int>> solve(vector<vector<int>> &path,int M) {     vector<vector<int>> res(path.size(), vector<int>(path[0].size(), -1));     for(int i=0;i<path.size();++i)         for (int j = 0; j < path[0].size(); ++j) {             int r=INT32_MAX;             dfs(path,i,j,0,r,0,M);             res[i][j] = r;         }     return res; } int main(void){     int N, M;     while (cin >> N >> M) {         int N1, N2;         cin >> N1 >> N2;         vector<vector<int>> path;         for (int i = 0; i < N1; ++i) {             vector<int> temp;             int data;             for (int j = 0; j < N2; ++j) {                 cin >> data;                 temp.push_back(data);             }             path.push_back(temp);         }         vector<vector<int>> res = solve(path, M);         for (auto v : res) {             for (auto i : v)                 cout << i << " ";             cout << endl;         }     }     getchar();     return 0; }
点赞 回复 分享
发布于 2018-07-24 15:16

相关推荐

不愿透露姓名的神秘牛友
11-05 23:10
上海寻梦信息技术有限公司 Java工程师 30.0k*18.0
我要offerOOO:双休很重要啊
点赞 评论 收藏
分享
头像
10-30 16:13
已编辑
蚌埠坦克学院 C++
点赞 评论 收藏
分享
点赞 96 评论
分享
牛客网
牛客企业服务