这题真的好坑啊,专坑我这种语文不好的
其实限制条件就一个,相邻的4个字符不能是重复相同的!!!!
剩下就是dfs求排列了
#include<cstdio> using namespace std; int n,vis[15],a[15],ans; void dfs(int cur){ if(cur == n+1){ ans++; return ; } for(int i=1;i<=3;++i){ if(i == a[cur-2] && a[cur-1] == a[cur-3] )continue; a[cur] = i; dfs(cur+1); } } int main(){ scanf("%d",&n); dfs(1); printf("%d",ans); }