携程附加题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;
    }
   
    
}  

#携程#
全部评论
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
我知道应该是这么做,但是没时间2333,第一部分用了半个小时
点赞 回复 分享
发布于 2016-09-17 22:14
旅行商问题...
点赞 回复 分享
发布于 2016-09-17 21:52
所以是O(n!)吗……一脸懵逼 最早想到但也是最早排除的做法
点赞 回复 分享
发布于 2016-09-17 21:51
一脸懵逼
点赞 回复 分享
发布于 2016-09-17 21:43
我是用c++做的,思路差不多,遍历起点,幸好测试量不大,不然一定gg = =
点赞 回复 分享
发布于 2016-09-17 21:38

相关推荐

就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务