这是一个用于解决支配集问题的 C++ 程序。算法开始 输入顶点数和边数。也输入边的端点。 函数 dominant(): 声明向量 Set。 取图中连接顶点的任意边,例如:X 和 Y。 将 X 和 Y 之间的任意一个顶点添加到集合 s 中。 删除连接到 X 的所有边。 结束示例#include using namespace std; vector g; bool visit[10001]; int i, j; vector dominant(int v, int e) { vector Set; //取任意边 ... 阅读更多
这是一个用于查找两个给定节点之间是否存在路径的 C++ 程序。算法开始 函数 isReach() 是一个递归函数,用于检查 d 是否可到达 s: A) 将所有顶点标记为未访问。 B) 将当前节点标记为已访问并将其入队,它将用于获取顶点的所有相邻顶点。 C) 将顶点从队列中出队并打印。 D) 获取出队顶点 s 的所有相邻顶点。 E) 如果相邻顶点未被访问,则将其标记为已访问并将其入队。 ... 阅读更多
这是一个用于解决给定特定情况下的匹配问题的 C++ 程序。这里,给定 N 个男人和 N 个女人,每个人都按偏好顺序对异性成员进行了排名,将男人和女人结婚在一起,这样就不会有两个异性的人同时都更喜欢对方而不是他们现在的伴侣。如果不存在这样的人,则所有婚姻都是“稳定的”。算法开始 函数 WomenPrefersMenOverMen1(): A) 检查女人是否更喜欢男人而不是她目前的未婚夫 men1 B) 如果 men1 在列表中出现在 men 之前 ... 阅读更多
这是一个生成每个子集中恰好有 k 个元素的所有可能子集的 C++ 程序。算法开始 函数 PossibleSubSet(char a[], int reqLen, int s, int currLen, bool check[], int l): 如果 currLen > reqLen 返回 否则如果 currLen = reqLen 则打印新生成的序列。 如果 s = l 则返回,没有剩余元素。 对于每个索引,都有两个选项: 继续使用起始值为“true”并递归调用 PossibleSubSet() 带有递增值 ... 阅读更多
这是一个通过抛硬币生成随机子集的 C++ 程序。算法开始 输入数组中的元素。 使用 rand(),生成一个随机二进制序列。 它随机生成 0 或 1 作为抛硬币的结果,如果结果为 1,则打印数组元素。 结束示例#include #include using namespace std; int main() { int i, n; coutn; int a[n]; cout