码迷,mamicode.com
首页 > 其他好文 > 详细

记2015.4.11 刷BestCoder 第一题 死亡 在 路上

时间:2015-04-12 09:08:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

 
 
技术分享
 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 }
View Code

自己有好多毛病;

这道题2个小时没有A;

是因为自己思索不够;

条例不公清晰。

下一次,我要列算法过程

 

记2015.4.11 刷BestCoder 第一题 死亡 在 路上

标签:

原文地址:http://www.cnblogs.com/GS-FIGHT/p/4419022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!