专栏文章
递归回溯
P1706题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miohbqjo
- 此快照首次捕获于
- 2025/12/02 19:13 3 个月前
- 此快照最后确认于
- 2025/12/02 19:13 3 个月前
**暴力循环函数,判断是否在已经存在,不存在则进入递归
CPPvoid combination(int n,vector<int>&a)
{
if(a.size()==n)
{
for(int i=0;i<a.size();i++) cout<<setw(5)<<a[i];
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(flag(a,i))
{
a.push_back(i);
combination(n,a);
a.pop_back();
}
}
}
flag函数用于判断容器内是否已经存在别的元素
CPPbool flag(vector<int>&a,int i)
{
for(int j=0;j<a.size();j++)
{
if(a[j]==i) return false;
}
return true;
}
最后是AC代码:
CPP#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
bool flag(vector<int>&a,int i)
{
for(int j=0;j<a.size();j++)
{
if(a[j]==i) return false;
}
return true;
}
void combination(int n,vector<int>&a)
{
if(a.size()==n)
{
for(int i=0;i<a.size();i++) cout<<setw(5)<<a[i];
cout<<endl;
return;
}
for(int i=1;i<=n;i++)
{
if(flag(a,i))
{
a.push_back(i);
combination(n,a);
a.pop_back();
}
}
}
int main()
{
int n;cin>>n;
vector<int> a;
combination(n,a);
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...