这是我的程序,用于查找给定集的所有子集。为了解决它,我使用了递归。 但是当我在windowsblocks上编译它时。它给出了
此应用程序已请求Runtime在a中终止它 不寻常的方式。
并且在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;
}
答案 0 :(得分:5)
for循环是无限循环,每次元素在向量中是push_back时,向量大小增加,使得条件i <1。 v.size()总是如此。
答案 1 :(得分:2)
在循环播放时,您不断向字符串推送字符串。有无限循环。在循环通过它时更改容器通常是个坏主意。
答案 2 :(得分:1)
似乎存在无限循环。该程序编译并正常运行但从不退出