超时一个点求助,而且发生奇怪的事情QAQ
查看原帖
超时一个点求助,而且发生奇怪的事情QAQ
393190
aldol_reaction楼主2020/10/17 11:23

太令人迷惑了,我在自己编译器(Dev Cpp)编译正确没有任何输出,但是算法应该主体是对的,我在提交时第三个点超时了,剩下的点都过了。。。于是我现在不知道咋办了。。更魔幻的是我在编译器debug的时候可以一步步的输出。。 btw,有没有判断数组是否有重复元素更快一点的方法啊,我感觉快排已经很快了可是还是超时qwq

#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;
}
2020/10/17 11:23
加载中...