黄题dfs无输出求救(别跟我说拿dp做)
查看原帖
黄题dfs无输出求救(别跟我说拿dp做)
765461
zhangmingsheng3521楼主2023/7/30 11:41
#include"bits/stdc++.h"
using namespace std;
int n;
int a[102],c[102];
bool flag=false;
bool b[102];
void dfs(int s,int k)//s:已经拉出来的人数 k:需要拉出来的人数 
{
	if (s<k) 
	{
		for (int i=1;i<=n;i++)
		{
			if (b[i])
			{
				b[i]=false;
				s++;
				dfs(s,k);
				s--;//回溯 
			    b[i]=true;
			}
		}
	}
	if (s==k)
	{
		bool mem=false;
		int place=0;
		for (int i=1;i<=n;i++)
		{
			if (b[i])
			{
				place++;
				c[place]=a[i];
			}
		}
		for (int i=1;i<=(n-k-1);i++)//判读 
		{
			if (!mem)
			{
				if (c[i]==c[i+1])
				{
					return;
				}
				if (c[i]>c[i+1])
				{
					mem=true;
				}
			}
			if (mem)
			{
				if (c[i]==c[i+1])
				{
					return;
				}
				if (c[i]<c[i+1]) 
				{
					return;
				}
		    }
		}
		flag=true;
	}
}
int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	for (int i=0;i<n;i++)
	{
		dfs(0,i);
		if (flag)
		{
			printf("%d",(n-i));
			return 0;
		}
	}
}
2023/7/30 11:41
加载中...