尝试递归填充和打印出两组的所有归纳函数的问题
Issues trying to recursively populate and print out all inductive functions of two sets
我无法弄清楚如何使我的递归函数正常工作。 这个想法是我有两个集合 A 和 B,我需要打印 A 到 B 的所有归纳函数。 这是我执行此操作的递归函数,但是输出(如下所示(不准确,我虽然可以看到为什么存在该问题,但我无法弄清楚如何解决它......
目前,我有 A = {a,b,c} 和 B = {1,2,3,4} 的正确输出数量,即 24,但它们包含重复数字的函数,这是不可接受的。 此外,一旦我通过它,我就会丢失 B[0],因此会丢失子集 {2,1,3},例如......
任何指导将不胜感激。
void nextFunction(vector<string> A,
vector<string> B,
vector<string> func,
int left,
mpq_class total,
int index) {
if (left == 0) {
print(func, A);
return;
}
for (int i = index; i < B.size(); ++i) {
func.push_back(B[i]);
nextFunction(A, B, func, left-1, total, index+1);
func.pop_back();
}
}
void print(vector<string> function, vector<string> A) {
for (int i = 0; i < (A.size()); ++i) {
cout << "(" << A[i] << "," << function[i] << ") ";
}
cout << endl;
}
输出:
(一,1( (乙,2( (三(
(一,1( (二,二( (三,四(
(一,1( (乙,3( (三(
(甲,1( (乙,3( (丙,4(
(一,1( (乙,4( (三(
(一,1( (乙,4( (丙,4(
(一,二
( (二,二( (三((一,二
( (二,二( (四((一,2( (乙,3( (三(
(一,2( (乙,3( (三( (丙,4(
(一,二( (乙,四( (三(
(一,2( (乙,4( (三,四(
(a,3( (b,2( (c,3(
(一,3( (乙,2( (丙,4(
(甲,3( (乙,3( (丙,3(
(一,三( (乙,3( (丙,4(
(甲,3( (乙,4( (丙,3(
(一,3( (乙,4( (丙,4(
(一,四( (乙,二( (三(
(一,四( (二,二( (三,四(
(一,四( (乙,3( (三(
(甲,4( (乙,3( (丙,4(
(甲,4( (乙,4( (丙,3(
(甲,4( (乙,4( (丙,4(
虽然我真的不认为这个问题是递归的好候选者,但你的算法可能如下所示:
PrintPossibleFunctions (range_values, already_chosen, fn_def):
if fn_def.size() == domain.size():
print elements in order, preceded by the corresponding domain element
return
for value in range_values:
if value not in already_chosen:
already_chosen.insert(value)
fn_def.push(value)
PrintPossibleFunctions(range_values, already_chosen, fn_def)
fn_def.pop()
already_chosen.remove(value)
相关文章:
- 两组使用lambda函数的大括号
- 程序没有问 3 个问题,而是将我对第一个问题的回答用于其他两个问题
- 尝试查找两组点的交集,错误"No viable overloaded '=' "
- 关于标准::condition_variables的两个问题
- 数组C++问题中最大和第二大的数字
- 如何在两组线程之间正确来回传输控制权
- 二维数组问题
- 两组的高效交集
- 关于C++容器的两个问题
- 如何匹配不同环境的两组?C++
- 如何在两组上做两指针技术
- 数组问题:变量周围的堆栈'arr'已损坏
- 我正在制作一个二十一点程序。我目前有两个问题
- 如何在C++中输出两组不同的随机数
- 比较两组相等的类型
- 无符号字符数组问题
- 将字符串从头到尾分成两组,每组 C++
- 使用set_union合并两组时,只读位置的分配
- 在同一目录下编译两组C 二进制文件
- 尝试递归填充和打印出两组的所有归纳函数的问题