爱奇艺第一题暴力36...太难啦太难啦

#include<iostream>
#include<vector>
using namespace std;

long long res = 0;

void dfs(int n, bool * a, int pos, int deep, vector<bool> visit)
{
	if (deep == n)
	{
		res = (res + 1) % (1000000007);
		return;
	}
	visit[pos] = 1;
	for (int i = 0; i < n; i++)
	{
		if (visit[i] == 1) continue;
		if ((a[deep-1] == 1 && i < pos) || (a[deep-1] == 0 && i > pos))
		{
			dfs(n, a, i, deep + 1, visit);
		}
	}
	visit[pos] = 0;
}
int main()
{
	int n;
	cin >> n;
	bool * a = new bool[n - 1];
	for (int i = 0; i < n - 1; i++)
		cin >> a[i];
	vector<bool> visit(n, 0);
	res = 0;
	for (int i = 0; i < n; i++)
		dfs(n, a, i, 1, visit);
	cout << res << endl;
	return 0;
}


#爱奇艺##题解#
全部评论
觉得是能用dp 推不出来递推公式
点赞 回复 分享
发布于 2019-09-08 17:03
同只会第一题,还只会第一题暴力组合的飘过
点赞 回复 分享
发布于 2019-09-08 17:06
我也是全排列做的过了36😂😂😂,第二题直接递归也不行
点赞 回复 分享
发布于 2019-09-08 17:11
我也36…太难了
点赞 回复 分享
发布于 2019-09-08 17:13
我写了两个if  也A了36 先算A数组变了几次cnt,cnt =0,就输出1,cnt=1就输出n-1
点赞 回复 分享
发布于 2019-09-08 17:13

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务