图形不完整
Incomplete graph
本文关键字:图形 更新时间:2023-10-16
我有一个图的邻接矩阵。我想计算哈密顿路径的数目。我知道蛮力方法测试所有N!排列。然而,我无法对其进行编码,我尝试过搜索,但找不到可能的方法。我在为简单的暴力方法寻求帮助。
谢谢。
查看我刚刚完成的实现:
还要检查这个汉密尔顿循环的实现,以了解它是如何实现的。
#include <stdio.h>
#include <stdbool.h>
#define NUM_VERTICES 4
bool graph[NUM_VERTICES][NUM_VERTICES] = {
{0, 1, 0, 1},
{1, 0, 1, 1},
{0, 1, 0, 0},
{1, 1, 0, 0},
};
int parent[NUM_VERTICES];
bool fin_hp_r(int v, int n)
{
// If all vertices are connected
if (n == NUM_VERTICES)
return true;
// For all neighbours
for (int i = 0; i < NUM_VERTICES; ++i)
if (graph[v][i] && parent[i] == -1)
{
parent[i] = v;
if (fin_hp_r(i, n + 1))
return true;
parent[i] = -1;
}
return false;
}
bool find_hamilton_path()
{
memset(parent, -1, sizeof(int) * NUM_VERTICES);
for (int i = 0; i < NUM_VERTICES; ++i)
{
parent[i] = i;
if (fin_hp_r(i, 1))
return true;
parent[i] = -1;
}
}
int main(void) {
find_hamilton_path();
for (int i = 0; i < NUM_VERTICES; ++i)
printf ("%d -> %dn", parent[i], i);
return 0;
}
这个用于计算所有Hamilton路径的数量:
#include <stdio.h>
#include <stdbool.h>
#define NUM_VERTICES 4
bool graph[NUM_VERTICES][NUM_VERTICES] = {
{0, 1, 0, 1},
{1, 0, 1, 1},
{0, 1, 0, 0},
{1, 1, 0, 0},
};
int parent[NUM_VERTICES];
long long cnt_fin_hp_r(int v, int n)
{
// If all vertices are connected
if (n == NUM_VERTICES)
return 1;
// For all neighbours
long long res = 0;
for (int i = 0; i < NUM_VERTICES; ++i)
if (graph[v][i] && parent[i] == -1)
{
parent[i] = v;
res += cnt_fin_hp_r(i, n + 1);
parent[i] = -1;
}
return res;
}
long long find_hamilton_path_number()
{
memset(parent, -1, sizeof(int) * NUM_VERTICES);
long long res = 0;
for (int i = 0; i < NUM_VERTICES; ++i)
{
parent[i] = i;
res += cnt_fin_hp_r(i, 1);
parent[i] = -1;
}
return res;
}
int main(void) {
printf("%lldn", find_hamilton_path_number());
return 0;
}
这是正在进行的比赛中出现的问题https://www.codechef.com/JAN16/problems/SEAKAM
相关文章:
- C++图形类指针混淆
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 这是实现图形的坏方法吗
- 打印 ONNXRUNTIME::图形没有模型
- 提升如何在图形可视化中写入边缘的权重?
- Doxygen - 如何在不生成图形的情况下生成文本调用关系结果
- C++ 中的图形菜单
- 将图形属性与 std::unique_ptr 捆绑在一起
- 从流到邻接列表的向量读取图形
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- 将图形表示为unordered_map<字符串、向量>时拓扑排序错误<string>
- 直接显示手动图形内存泄漏
- Directx 12 :在两个进程之间共享图形内存
- Microsoft C++ 用于图形 API 的 Rest SDK
- 如何将到达图形视图右侧(末端)的QGraphicsPixmapItem移动到左侧(开始)侧(就像在贪吃蛇游戏中发生的事情
- 图形初学者C++(跳过控制台)?
- 在 cpp 中最简单的图形实现
- 提升图形库:资源受限的最短周期
- 使用 stl 库创建图形是如何工作的?