最后一个TLE,求助如何优化
#include<bits/stdc++.h>
using namespace std;
const int N = 15;
int m[N] = {0};
int n;
int s = 0;
void print(){
if(s>3)return;
for(int i = 0;i<n;i++)cout<<m[i]+1<<" ";
puts("");
}
bool judge(int h,int x){
bool flag = true;
for(int i = 0;flag&&i<h;i++){
if(m[i]==x)flag = false;
if(abs(m[i]-x)==abs(i-h))flag = false;
}
return flag;
}
int dfs(int h){
if(h==n){
s++;print();
}
else{
for(int i = 0;i<n;i++){
if(judge(h,i)){
m[h] = i;
dfs(h+1);
}
}
}
}
int main(){
cin>>n;
dfs(0);
cout<<s;
return 0;
}
最后一个TLE了,
还有一个问题
为什么我开O2优化以后全部MLE了???