太令人迷惑了,我在自己编译器(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;
}