c++ - 我在给定程序中哪里错了?

标签 c++ algorithm recursion std

这是我的程序,用于查找给定集合的所有子集。为了解决它,我使用了递归。 但是当我在代码块上的窗口中编译它时。它给出了

This application has requested the Runtime to terminate it in a unusual way.

而在 gcc 编译器中它没有显示任何答案,没有响应。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

vector<string> findAllSubset(char c, vector<string> v) {
    int size = v.size();
    if(size == 1) {
        v.push_back("");
        return v;
    }
    c = v[size-1][0];
    v.pop_back();
    v = findAllSubset(c, v);

    for(int i = 0; i < v.size(); i++) {
        string s= "";
        if(v[i].size() == 0){
            s += c;
            v.push_back(s);
        }
        else {
            s += v[i] + c;
            v.push_back( s );
        }
    }
    return v;
}

main() {
    vector<string> v, ans;
    char c = 65;
    v.push_back("a");
    v.push_back("b");
    //v.push_back("c");
    //v.push_back("d");
    ans = findAllSubset(c, v);
    return 0;
}

最佳答案

for 循环是一个无限循环,每次 vector 中的元素 push_back 时, vector 大小都会增加,使得条件 i < v.size() 始终为真。

关于c++ - 我在给定程序中哪里错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994166/

相关文章:

c++ - Xcode 调试器不显示 C++ cout 输出

c++ - 包含 opencv 的 Bitbake 配方

python - 带有 Eigen3::Vector3d 和 std::vector<Vector3d> 的 SWIG

java - 我无法在 java 中修改我的静态变量

php - 在 PHP 中按字母顺序递归排序多维数组的键和值

C++ char* 到字符串运行时错误

algorithm - 无特定形式的极大整数的素数证明算法

algorithm - 一道关于开关控制的算法题

python - 通过重用代码和传递成员名称来运行测试来减少行数

c++ - 使用递归(无循环)C++ 对数组进行冒泡排序