#include <iostream>
#include <algorithm>
#include <cstring>
const int M = 1100;
using namespace std;
struct Node{
int num;
int pos;
}res[M];
int num[M],n,p,Count=0;
bool flag=false;
bool check(int x,int y)
{
for(int i=x;i<y;i++)
{
if(num[i]==num[y])
return false;
}
return true;
}
void dfs(int pos,int cur,int k)
{
if(Count>=p) return;
if(cur==k)
{
flag=true;
Count++;
for(int i=0;i<k-1;i++)
{
cout<<res[i].num<<' ';
}
cout<<res[k-1].num<<endl;
return;
}
for(int i=pos;i<n;i++)
{
if(cur==0||(cur!=0&&res[cur-1].num<=num[i]))
{
// subsequnce 只能出现一次 所以可以有两个cut
if(cur==0&&!check(0,i))
hdu 2610 dfs+判重剪枝
最新推荐文章于 2021-03-31 18:09:34 发布