该怎么优化呢
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<int> trackPath;
int sum=0;
int checkPush(vector<int> arr,int row,int col) {
for(int i=1;i<row;i++) {
if(abs(col-arr[i])==abs(row-i) || col==arr[i]) {
return 0;
}
}
return 1;
}
void track(vector<int> &arr,int row,int n) {
if(row==n+1) {
sum++;
if(sum<=3) {
for(int i=0;i<trackPath.size();i++) {
cout<<trackPath[i]<<" ";
}
cout<<"\n";
}
return;
}
for(int i=1;i<n+1;i++) {
if(checkPush(arr,row,i)) {
trackPath.push_back(i);
arr[row] = i;
track(arr,row+1,n);
trackPath.pop_back();
arr[row] = 0;
}
}
}
int main(int argc, char** argv) {
int n;
cin>>n;
vector<int> arr(n+1, 0);
track(arr,1,n);
cout<<sum;
return 0;
}