携程附加题Java代码

思路:枚举每个点,深搜+回溯
import java.util.*;

public class Main{
	
	static int n;
	static int [][] adj;
	static boolean vis[];
	static int ans = Integer.MAX_VALUE;
    public static void main(String [] args)
    {
    	Scanner in = new Scanner(System.in);
    	
    	while(in.hasNext())
    	{
    		 n = in.nextInt();
    		 adj = new int[n][n];
    		 vis  = new boolean[n];
    		String rub = in.nextLine();
    		for(int i = 0; i<n; i++)
    		{
    			String str = in.nextLine();
    			String [] line = str.split(",");
    			for(int j = 0; j<n; j++)
    			{
    				adj[i][j] = Integer.parseInt(line[j]);
    			}
    		}
    		for(int i = 0; i<n; i++)
    		{
    			dfs(i, 1, 0);
    		}
    		System.out.println(ans);
    		
    	}
    }
    static void dfs(int i, int len, int cost)
    {
    	if(len == n)
    	{
    		ans = Math.min(ans, cost);
    		return;
    	}
    	if(cost >= ans) return;
    	vis[i] = true;
    	for(int j = 0; j<n; j++)
    	{
    		if(j!=i && !vis[j])
    		{
    			dfs(j, len +1, cost + adj[i][j]);
    			
    		}
    	}
    	vis[i] = false;
    }
   
    
}  

#携程#
全部评论
我是用c++做的,思路差不多,遍历起点,幸好测试量不大,不然一定gg = =
点赞 回复 分享
发布于 2016-09-17 21:38
一脸懵逼
点赞 回复 分享
发布于 2016-09-17 21:43
所以是O(n!)吗……一脸懵逼 最早想到但也是最早排除的做法
点赞 回复 分享
发布于 2016-09-17 21:51
旅行商问题...
点赞 回复 分享
发布于 2016-09-17 21:52
我知道应该是这么做,但是没时间2333,第一部分用了半个小时
点赞 回复 分享
发布于 2016-09-17 22:14
int dfs(const vector<vector<int> > &vv, vector<bool> &visited, int s, int path, int &Min) { bool flag = false; for(int i = 0; i < vv[s].size(); ++i) { if(!visited[i]) { flag = true; visited[i] = true; dfs(vv, visited, i, path+vv[s][i], Min); visited[i] = false; } } if(!flag && Min > path) Min = path; } int main() { int Min = INT_MAX; vector<vector<int> > vv; vv.push_back({0,1,2,3}); vv.push_back({1,0,4,5}); vv.push_back({2,4,0,2}); vv.push_back({3,5,2,0}); vector<bool> visited(vv.size()); for(int i = 0; i < vv.size(); ++i) { visited[i] = true; dfs(vv, visited, i, 0, Min); visited[i] = false; } cout << Min << endl; return 0; }
点赞 回复 分享
发布于 2016-09-17 23:14

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 15 评论
分享
牛客网
牛客企业服务