当前位置: 首页 > wzjs >正文

拼多多网站在那里做软文推广怎么写

拼多多网站在那里做,软文推广怎么写,怎么利用个人网站,网站关键词推广价格TSP问题的贪心算法还可以采用最短链接策略:每次选择最短边加入到解集合,但是要保证加入解集合的边最终形成一个哈密顿回路。请说明从剩余边集选择一条边(u, v)加入解结合S,应满足什么条件,设计算法并编程实现。 输入格式: 输入n…

TSP问题的贪心算法还可以采用最短链接策略:每次选择最短边加入到解集合,但是要保证加入解集合的边最终形成一个哈密顿回路。请说明从剩余边集选择一条边(u, v)加入解结合S,应满足什么条件,设计算法并编程实现。

输入格式:

输入n+1行,第一行为城市的个数(小于10个);以下n行为代价矩阵,不可达的代价用999表示。

输出格式:

输出若干行,前面每一行为路径上的一条边及权值(边和权值之间以两个短横线间隔),最后一行为最小代价值。

输入样例:

5
999 3 3 2 6
3 999 7 3 2
3 7 999 2 5
2 3 2 999 3
6 2 5 3 999

输出样例:

(v1,v4)--2
(v3,v4)--2
(v2,v5)--2
(v1,v2)--3
(v3,v5)--5
14

 

问题分析

对于TSP问题,准确的解法需要遍历所有可能的路径,时间复杂度为O(n!),这在实际应用中往往是不可行的。因此,我们常常采用近似算法,如贪心算法,来获得一个较好的解。

本题采用贪心算法中的最短链接策略:每次选择当前最短的边加入解集合,但要确保最终能形成哈密顿回路。

加入边的条件

从剩余边集选择一条边(u, v)加入解集合S时,应满足以下条件:

  1. 度数限制:每个顶点的度数不能超过2(因为在哈密顿回路中,每个顶点恰好有两条边相连)
  2. 无环约束:加入边(u, v)不会在当前解集合中形成环,除非这是最后一条边且能形成哈密顿回路
  3. 连通性:解集合中的边最终能形成一个连通图

具体来说,对于一条边(u, v),如果满足以下条件,我们就可以将其加入解集合:

  • 顶点u和顶点v的度数都小于2
  • 加入边(u, v)不会提前形成环(使用并查集检测)
  • 对于最后一条边,必须连接两个度数为1的顶点,以形成哈密顿回路

解题思路

  1. 将所有可行的边按权重从小到大排序
  2. 使用贪心策略,每次选择权重最小的边加入解集合,但要满足上述条件
  3. 使用并查集来检测是否会形成环
  4. 记录每个顶点的度数,确保不超过2
  5. 最后一条边需要特殊处理,确保形成哈密顿回路

算法的核心部分:

  • 如果已经选择了n-1条边,那么下一条边就是最后一条边,需要特殊处理
  • 对于最后一条边,需要确保它连接两个度数为1的顶点,形成哈密顿回路
  • 对于其他边,需要确保两个顶点的度数都小于2,并且不会形成环

 代码实现:
 

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] cost = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cost[i][j] = sc.nextInt();}}List<Edge> edges = new ArrayList<>();for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {//过滤不可达的边if (cost[i][j] != 999) {edges.add(new Edge(i, j, cost[i][j]));}}}//按权重排序edges.sort(Comparator.comparingInt(e -> e.weight));// 记录每个顶点的度数int[] degree = new int[n];// 初始化并查集int[] parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;}//存储选中的边List<Edge> selectedEdges = new ArrayList<>();int totalCost = 0;for (Edge edge : edges) {if (selectedEdges.size() == n - 1) {// 特殊处理最后一条边:必须连接两个度数为1的顶点if (degree[edge.u] == 1 && degree[edge.v] == 1) {selectedEdges.add(edge);totalCost += edge.weight;break;}} else {if (degree[edge.u] < 2 && degree[edge.v] < 2) {int rootU = find(parent, edge.u);int rootV = find(parent, edge.v);//避免提前形成环if (rootU != rootV) {join(parent, edge.u, edge.v);degree[edge.u]++;degree[edge.v]++;selectedEdges.add(edge);totalCost += edge.weight;}}}}for (Edge edge : selectedEdges) {System.out.printf("(v%d,v%d)--%d\n", edge.u + 1, edge.v + 1, edge.weight);}System.out.println(totalCost);}// 并查集static int find(int[] parent, int x) {return parent[x] == x ? x : (parent[x] = find(parent, parent[x]));}static void join(int[] parent, int x, int y) {x = find(parent, x);y = find(parent, y);if (x!= y) {parent[x] = y;}}//自定义边类static class Edge {int u, v, weight;Edge(int u, int v, int weight) {this.u = u;this.v = v;this.weight = weight;}}
}

http://www.dtcms.com/wzjs/244013.html

相关文章:

  • 国家发改委网站开发区搜狗网
  • 聊城手机网站服务百度优化
  • 樊城网站建设各大网站提交入口
  • 网站建设怎么找客户资源做销售有什么技巧和方法
  • 网站建设 制作公司蜂蜜网络营销推广方案
  • 完整版网站推广方案产品宣传方式有哪些
  • 深圳地铁公司网站沈阳专业seo关键词优化
  • 医院网站建设考试答案整合营销传播最基础的形式是
  • 网站301重定向网络营销的发展趋势
  • 网站搭建app怎么注册网站平台
  • 热 网站正在建设中各大搜索引擎入口
  • 高级营销型网站建设最新疫情新闻100字
  • 四川做网站优化价格怎么找需要做推广的公司
  • 网站建设赠送seo抖音广告推广
  • 个人做涉黄网站什么罪无安全警告的浏览器
  • 怎样建设相亲网站可以做产品推广的软件有哪些
  • 江苏 做网站行业网站
  • 武汉便宜网站建设注册推广团队
  • 沂水做网站私人网站服务器
  • 如何建立自己生活网站深圳高端seo公司助力企业
  • 电子商城网站开发太原seo自媒体
  • 网站开发工具 n宁波免费建站seo排名
  • 济南 网站建设 域名注册东莞网络排名优化
  • asp.net 网站运行助手厦门小鱼网
  • 南宁有做网站的公司吗北京seo百度推广
  • 石家庄最新疫情最新消息轨迹seo推广软件哪个好
  • 怎么做 代刷网站百度指数搜索指数的数据来源
  • 东拼西凑网站谁做的优化seo可以从以下几个方面进行
  • 兰州拼团网站建设上海网站建设哪家好
  • 大型的建设工程类考试辅导网站网站维护收费标准