递归好像不能用吧,我就超时了,得60分
查看原帖
递归好像不能用吧,我就超时了,得60分
1377083
fengzi_lc楼主2024/12/11 16:13
#include <iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
#include<iomanip>
int n, r;
int stack[22];
int visited[22];
void dfs(int depth, int maxDepth)
{
	if (depth == maxDepth)
{
	for (int i = 0; i+1 < maxDepth; i++)
	{
		if (stack[i] >= stack[i + 1])return;
	}
	for (int i = 0; i < maxDepth; i++)
	{
		cout << "  " << stack[i];
	}
	cout << endl;
	return;
}
	for (int i = 0; i < n; i++)
	{
		if (!visited[i])
		{
			visited[i] = 1;
			stack[depth] = i + 1;
			dfs(depth + 1, maxDepth);
			visited[i] = 0;
		}
	}
}

int main()
{
	cin >> n >> r;
	memset(visited, 0, sizeof(visited));
	int maxDepth = r;
	dfs(0, maxDepth);

	return 0;
}
2024/12/11 16:13
加载中...