zoukankan      html  css  js  c++  java
  • hdu 5202 Rikka with string

    /* ***********************************************
    Author        :xryz
    Email         :523689985@qq.com
    Created Time  :4-11 19:03:38
    File Name     :a.cpp
    ************************************************ */
    
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    char s[1024];
    int cnt,n,f,t[1024];
    int huiwen()
    {
        int i;
        for(i=0;i<=n/2+1;i++)
        {
            if(s[i]=='?'||s[n-1-i]=='?') return -1;
            if(s[i]!=s[n-1-i]) return 1;
        }
        return 0;
    }
    void dfs(int now)
    {
        if(now==cnt)
        {
            if(huiwen()==1) f=1;
            return ;
        }
        for(int i='a';i<='z';i++)
        {
            s[t[now]]=i;
            dfs(now+1);
            if(f) return ;
        }
    }
    int main()
    {
        int i;
        while(~scanf("%d",&n))
        {
            cnt=0;
            scanf("%s",s);
            for(i=0;i<n;i++)
            {
                if(s[i]=='?') t[cnt++]=i;
            }
            f=0;
            if(cnt!=0) dfs(0);
            else f=huiwen();
            if(f) printf("%s
    ",s);
            else printf("QwQ
    ");
        }
        return 0;
    }
    
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<ctime>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char s[1005];
    int main()
    {
        int i,n;
        while(scanf("%d",&n)!=EOF)
        {
            scanf("%s",s);
            bool isok=0;
            for(int i=0;i<n/2;i++)
            {
                if(s[i]=='?'||s[n-1-i]=='?'||s[i]!=s[n-1-i])
                {
                    isok=1;
                }
            }
            if(isok)
            {
                bool flag=0;
                for(int i=n/2-1;i>=0;i--)
                {
                    if(s[i]!='?'&&s[n-1-i]!='?'&&s[i]!=s[n-1-i])
                    {
                        flag=1;
                    }
                }
                for(i=n/2-1;i>=0;i--)
                {
                    if(s[i]=='?'&&s[n-1-i]!='?')
                    {
                        if(!flag)
                        {
                            if(s[n-i-1]!='a')
                            {
                                s[i]='a';
                                flag=1;
                            }
                        }
                    }
                }
                for( i=0;i<n/2;i++)
                {
                    if(s[i]=='?')
                    {
                        if(s[n-1-i]=='?')
                        {
                            if(!flag)
                            {
                                s[i]='a';
                                s[n-i-1]='b';
                                flag=1;
                            }
                            else
                            {
                                s[i]=s[n-i-1]='a';
                            }
                        }
                        else
                        {
                            if(!flag)
                            {
                                if(s[n-1-i]!='a')
                                {
                                    s[i]='a';
                                    flag=1;
                                }
                            }
                            else
                            {
                                s[i]='a';
                            }
                        }
                    }
                    else if(s[n-1-i]=='?')
                    {
                        if(!flag)
                        {
                            if(s[i]=='a')s[n-i-1]='b';
                            else s[n-i-1]='a';
                            flag=1;
                        }
                        else
                        {
                            s[n-i-1]='a';
                        }
                    }
                }
                for( i=n/2-1;i>=0;i--)
                {
                    if(s[i]=='?')
                    {
                        if(!flag)
                        {
                            s[i]='b';
                            flag=1;
                        }
                        else s[i]='a';
                    }
                }
                if(n%2)s[n/2]='a';
                printf("%s
    ",s);
            }
            else printf("QwQ
    ");
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    信号量Semaphore
    进程锁Lock
    创建多进程Process
    什么是进程?什么是线程?进程和线程之间的区别是什么?
    Git命令
    xss攻击问题以及如何防范
    ORM跨表查询问题
    for循环将字典添加到列表中出现覆盖前面数据的问题
    Linux源码的目录结构
    嵌入式中 MMU的功能
  • 原文地址:https://www.cnblogs.com/xryz/p/4848043.html
Copyright © 2011-2022 走看看