标签:
1 #include<cstdio> 2 char a[101]; 3 int T; 4 bool is(){ 5 char *f, *e; 6 f = a; 7 e = a + T - 1; 8 for( ; f<e; f++,e-- ) 9 if( *f!=*e ) return false; 10 return true; 11 } 12 bool cmp(){ 13 char *f, *e; 14 f = a; 15 e = a + T - 1; 16 for( ; f<e; f++,e-- ) 17 if( *f==‘?‘||*e==‘?‘ ) ; 18 else { if( *f!=*e ) return true; } 19 return false; 20 } 21 void change(){ 22 if( T%2==0 ) return; 23 if( *(a+T/2)==‘?‘ ) *(a+T/2)=‘a‘; 24 return ; 25 } 26 bool T_T(){ 27 bool flag = false; 28 char *f, *e; 29 change (); 30 if( is() ){ 31 f = a; 32 e = a + T - 1; 33 for( ; e>f; e--, f++ ){ 34 if( *e==‘?‘ ) { 35 flag = true; 36 *e = ‘b‘; 37 *f = ‘a‘; 38 break; 39 } 40 } 41 for( ; f<=e; f++, e-- ){ 42 if( *f==‘?‘ ) { 43 *f = *e = ‘a‘; 44 } 45 } 46 return flag; 47 } 48 49 if( cmp() ){ 50 f = a; 51 e = a + T - 1; 52 for( ; f<=e; f++, e-- ){ 53 if( *f==‘?‘ ) *f = ‘a‘; 54 if( *e==‘?‘ ) *e = ‘a‘; 55 } 56 return true; 57 } 58 59 f = a; 60 e = a + T - 1; 61 for( ; e>f; e--, f++ ) 62 if( *e==‘?‘ ) { 63 if( *f==‘?‘ ){ *e = ‘b‘;*f==‘a‘; } 64 else if( *f==‘a‘ ) *e = ‘b‘; 65 break; 66 } 67 if( e<=f ){ 68 if( T%2==0 ) { f=a+T/2-1; e = a + T/2; } 69 else {f = a+T/2-1;e = a + T/2 +1;} 70 for( ; *e; e++, f-- ){ 71 if( *f==‘?‘ ) { 72 if( *e==‘a‘ ){ *f=‘b‘; } 73 else *f = ‘a‘; 74 break; 75 } 76 } 77 } 78 f = a; 79 e = a + T - 1; 80 for( ; f<=e; f++, e-- ){ 81 if( *f==‘?‘ ) *f = ‘a‘; 82 if( *e==‘?‘ ) *e = ‘a‘; 83 } 84 return !is(); 85 86 } 87 int main(){ 88 while( scanf( "%d", &T ) ){ 89 getchar(); 90 gets( a ); 91 if( T_T() ) puts( a ); 92 else puts( "QwQ" ); 93 } 94 return 0; 95 }
自己有好多毛病;
这道题2个小时没有A;
是因为自己思索不够;
条例不公清晰。
下一次,我要列算法过程
记2015.4.11 刷BestCoder 第一题 死亡 在 路上
标签:
原文地址:http://www.cnblogs.com/GS-FIGHT/p/4419022.html