文章目录
https://mp.weixin.qq.com/s?subscene=19&__biz=MzAxODQxMDM0Mw==&mid=2247485007&idx=1&sn=ceb42ba2f341af34953d158358c61f7c&chksm=9bd7f847aca071517fe0889d2679ead78b40caf6978ebc1d3d8355d6693acc7ec3aca60823f0&scene=7&ascene=65&devicetype=android-29&version=2700143b&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=A%2BhmyLdFpIsPdJF0SXDQntY%3D&pass_ticket=iYXIEnqebQAjlhnMTVCsEcjnB%2B4j0esHOH7tNGKywDBBDh2z3hVP%2BIjJXJPNIrFt&wx_header=1
子集
编译时出现“void value not ignored as it ought to be”错误,原因是因为,一个函数的返回值为void,但是你又把这个函数的返回值赋值给了一个具体类型的变量。
#include <iostream>
#include<bits/stdc++.h>
///这个代码并不正确,没有剪枝,没有[],获许计算出1,2,3,4个元素的子集个数,然后计数,到了就跳?
//或者一个n维的记忆数组??不行,死路一条
///这个应该是排列的代码
using namespace std;
int mark[15]={0};
int fin=3;
stack<int> res;
void backtrack(int m)
{
if(m>fin)
{
return ;
}
for(int i=1;i<=fin;i++)
{
if(mark[i]==1)
{
continue;
}
mark[i]=1;
res.push(i);
///out
stack<int>buf_s;
int buf;
cout<<"[";
for(int i=1;i<=fin&&!res.empty();i++)
{
buf=res.top();res.pop();
buf_s.push(buf);
cout<<buf<<" ";
}
cout<<"]"<<endl;
for(int i=1;i<=fin&&!buf_s.empty();i++)
{
buf=buf_s.top();buf_s.pop();
res.push(buf);
}
///
backtrack(m+1);
res.pop();
mark[i]=0;
}
return ;
}
int main()
{
backtrack(1);
return 0;
}