社区讨论

超时一个点求助,而且发生奇怪的事情QAQ

P1706全排列问题参与者 7已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@lod3sxq0
此快照首次捕获于
2023/10/31 00:17
2 年前
此快照最后确认于
2023/11/05 10:35
2 年前
查看原帖
太令人迷惑了,我在自己编译器(Dev Cpp)编译正确没有任何输出,但是算法应该主体是对的,我在提交时第三个点超时了,剩下的点都过了。。。于是我现在不知道咋办了。。更魔幻的是我在编译器debug的时候可以一步步的输出。。 btw,有没有判断数组是否有重复元素更快一点的方法啊,我感觉快排已经很快了可是还是超时qwq
CPP
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<set>
using namespace std;

int n;
int a[10];

void dfs( int i, int x) {
	if (i == n) {
		int b[10];
		for(int i = 0; i < n; i++) {
			b[i] = a[i];
		}
		sort(b, b + n, greater<int>());
		for(int i = 0; i < n - 1; i++) {
			if(b[i] == b[i + 1]) {
				return;
			}
		}
		for(int i = 0; i < n; i++) {
			printf("%5d", a[i]);
		}
		puts("");
		return;
	}
	for(int y = x; y > 0 && y <= n; y++) {
		a[i] = y;
		dfs(i + 1, 1);
	}
}
int main() {
	scanf("%d", &n);
	dfs(0, 1);
	return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...