HDU 6342

时间:2022-06-09
本文章向大家介绍HDU 6342,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <bits/stdc++.h>
using namespace std;
char s[5001];

int main()
{
    int t,n,m;
    scanf("%d",&t);
    while(t--) 
    {
        scanf("%s",s);
        int len=strlen(s),i;
        
        for( i=0;i<len;i++)
           {
               if(len==1&&s[0]=='0'){
               printf("0n");
               break;
               }
                   int j=i;
                  while(j<len)
                  {
                      if(s[j]=='+')break;
                      if(s[j]=='*')break;
                      if(s[j]=='0')break;
                      j++;
                }
                  
                  if(j==len)
                  {
                      for(int j=i;j<len;j++)
                         if(s[j]=='?')s[j]='1';
                         
                         printf("%sn",s);
                         break;
                  }
                  
                  if((s[j]=='*'||s[j]=='+'))
                   if(j==0||(j>0&&(s[j-1]=='*'||s[j-1]=='+'))||(s[j+1]==''||s[j+1]=='*'||s[j+1]=='+'))
                  {printf("IMPOSSIBLEn");break;}
                  
                  if(j>0&&s[j]=='0'&&(s[j-1]=='?'||(s[j-1]>'0'&&s[j-1]<='9')))
                  {
                      if(s[j-1]=='?')s[j-1]='1';
                      if(s[j+1]=='?'&&(s[j+2]=='*'||s[j+2]=='+'))s[j+1]='1';
                  }
                  
                  if(s[j]=='0')
                  {
                        
                     if(s[j+1]=='?'&&s[j+2]=='0'&&s[j-1]>'0'&&s[j-1]<='9')s[j+1]='1';
                  
                        if((s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='0'){printf("IMPOSSIBLEn");break;}
                       if((s[j-1]=='+'||s[j-1]=='*'||j==0)&&s[j+1]=='?'&&s[j+2]=='0')s[j+1]='+';
                       if((s[j-1]<'0'||s[j-1]>'9')&&(s[j+1]>'0'&&s[j+1]<='9')){printf("IMPOSSIBLEn");break;}
                       if((j==0||s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='?'&&(s[j+2]=='*'||s[j+2]=='+'||(j+2)>=len)){printf("IMPOSSIBLEn");break;}
                       if(s[j+1]=='?'&&s[j+2]=='?')
                       {s[j+1]='+'; s[j+2]='1';}
                       if((s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='?'&&(s[j+2]>'0'&&s[j+2]<='9'))
                       s[j+1]='+';
               }
               if(s[i]=='?')s[i]='1';
           }
           if(i==len)printf("%sn",s);
    }
    return 0;
}