C 忽远忽近的距离
队友的解法
看着像是枚举4种情况(-3,-2,2,3)
但代码逻辑(那个循环)那块没看懂,有没有大佬解答一下
#include <bits/stdc++.h>
using namespace std;
int a[100005]={0};
bool select(int n,int m,int a[n]){
int p[] = {-3,-2,2,3};
if (m == n) {
return true;
}
for (int i=0;i<4;i++){
if (m+p[i]>=0 && m+p[i]<n && a[m+p[i]] == 0){
a[m + p[i]] = m + 1;
if (select(n,m+1,a)) {
return true;
}
a[m+p[i]]=0;//行不通
}
}
return false;
}
int main(){
int n;
cin>>n;
if (select(n,0,a)){
for (int i=0;i<n;i++){
cout<<a[i]<<" ";
}
}else{
cout<<"-1";
}
}