#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; char a[1000+100]; int vis[1000+100]; int n; int cnt; int ok; bool huiwen() { int l=0; int r=strlen(a)-1; while(l<r) { if(a[l]!=a[r]) break; l++; r--; } //printf("%d %d\n",l,r); if(l>=r) return false; return true; } void dfs(int rt) { if(ok==1) return ; if(rt>=cnt) { if(huiwen()) { printf("%s\n",a); ok=1; } return ; } for(int i=0;i<26;i++) { a[vis[rt]]=‘a‘+i; dfs(rt+1); } } int main() { int i,j,k; while(scanf("%d",&n)!=EOF) { cnt=0;ok=0; scanf("%s",a); for(i=0;i<strlen(a);i++) { if(a[i]==‘?‘) { vis[cnt++]=i; } } dfs(0); if(ok==0) printf("QwQ\n"); } return 0; }
原文:http://www.cnblogs.com/sola1994/p/4445367.html