hdu Rikka with string (dfs)

#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;
}

  

posted @ 2015-04-21 20:17  sola94  阅读(80)  评论(0编辑  收藏  举报