初学回溯,哈密尔顿回路问题的实现
来源:互联网 发布:access数据库培训 编辑:程序博客网 时间:2024/05/16 13:43
#include<stdio.h>void hamilton(int n, int x[], int c[100][100]) {int i, k;int *s = malloc(n*sizeof(int));for (i = 0; i < n; i++) {x[i] = -1;s[i] = 0;}k = 1;s[0] = 1;x[0] = 0;while (k >= 0) {x[k] = x[k] + 1;while (x[k] < n){if ((s[x[k]]==0) &&(c[x[k - 1]][x[k]]==1))break;elsex[k] = x[k] + 1;}if ((x[k] < n)&&(k != n - 1)) {s[x[k]] = 1;k = k + 1;}else if ((x[k] < n)&&(k == n - 1) && c[x[k]][x[0]])break;else {x[k] = -1;k = k - 1;s[x[k]] = 0;}}}void main() {int n;printf("Enter the n node:\n");scanf("%d", &n);int *x = malloc(sizeof(int)*n);int c[100][100];memset(c, 0, sizeof(c));printf("Enter the m side:\n");int m;scanf("%d", &m);int t1, t2;printf("Enter the a and b if they are connected:\n");for (int i = 0; i < m; i++) {scanf("%d %d", &t1, &t2);c[t1-1][t2-1] = 1;c[t2-1][t1-1] = 1;}hamilton(n, x, c);printf("Hamiltonian path:\n");for (int i = 0; i < n; i++)printf("%d->", x[i]+1);printf("1\n");}
0 0
- 初学回溯,哈密尔顿回路问题的实现
- 哈密尔顿回路问题
- 图论问题--求哈密尔顿回路的问题
- 哈密尔顿回路
- 哈密尔顿回路
- Granny's Bike(哈密尔顿回路--深搜,回溯)
- POJ 1776 竞赛图的哈密尔顿回路
- 哈密尔顿回路 C++
- UVA 216 二维平面的最小哈密尔顿回路
- [c++,algorithm] 哈密尔顿回路判断
- “欧拉回路”与“哈密尔顿回路”
- 欧拉回路和哈密尔顿回路
- 回溯法解hamilton回路问题
- 回溯法解hamilton回路问题
- 回溯——哈密顿回路问题
- poj 2288 Islands and Bridges_状态压缩dp_哈密尔顿回路问题
- SGU 122 The book 满足ore性质的哈密尔顿回路求法
- SGU 122. The book 哈密尔顿回路 构造
- 【POJ 1742】Coins
- daemon 进程为什么要fork两次
- 线程的同步和异步
- 51单片机超高精度6路舵机控制程序
- 虚拟机克隆后无法联网问题修复
- 初学回溯,哈密尔顿回路问题的实现
- C++ string 简单实现
- Composer 国内镜像
- 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
- js获取页面路径的指定参数值
- nginx命令行参数
- camel标记法是什么方法
- 【日常学习】【floyd】codevs1077 多源最短路 题解
- Android【布局管理器】——相对布局RelativeLayout