读完题后基本就能确定深度优先搜索了。。
剩下的细节自己填补即可。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int N;
int ans[10000+2],x[10000+2];
bool flag[10000+2];
void DFS(int n){
if(n>N){
printf("%d",ans[1]);
for(int i=2;i<=N;++i)printf(" %d",ans[i]);
printf("\n");
exit(0);
}else{
for(int i=1;i<=N;++i){
if(!flag[i] && x[ans[n-1]]!=x[i]){
ans[n]=i;
flag[i]=true;
DFS(n+1);
flag[i]=false;
}
}
}
}
int main() {
scanf("%d",&N);
for(int i=1;i<=N;++i)scanf("%d",x+i);
DFS(1);
return 0;
}