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

C. Postcard

时间:2019-01-07 22:33:00      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:std   i++   gets   col   不可   ||   tca   namespace   个数   

就是直接肛就对了

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,len,sum=0,sum1=0,sum2=0;///分别记录字母的数量,?的数量,*的数量
 6     char a[201];
 7     gets(a);
 8     cin>>n;
 9     len=strlen(a);
10     for(int i=0; i<len; i++)
11         if(a[i]>=a&&a[i]<=z)
12             sum++;
13         else if(a[i]==?)
14             sum1++;
15         else if(a[i]==*)
16             sum2++;
17     if(sum==n)///如果字母的数量等于n直接输出字符串(跳过*,?)
18     {
19         for(int i=0; i<len; i++)
20             if(a[i]>=a&&a[i]<=z)
21                 cout<<a[i];
22     }
23     else if(sum>n)///如果预期的少于已经有的,则需要减少字符
24     {
25         int ch=sum-n;///判断要减少的个数
26         if(ch>(sum1+sum2))///如果?和*的数量加起来都少于要减少的则就不可能存在,输出impossible
27             cout<<"Impossible";
28         else///反之,消掉ch个字符
29         {
30             for(int i=0; i<len; i++)
31             {
32                 if((a[i+1]==?||a[i+1]==*)&&ch)///消去前ch个非字母字符前的字母
33                 {
34                     i++;///还要跳过?*
35                     --ch;
36                 }
37                 else if((a[i]==?||a[i]==*)&&ch==0)
38                     continue;
39                 else cout<<a[i];
40             }
41         }
42     }
43     else if(sum<n)///如果n>已经有的字母,就需要增加字母
44     {
45         if(sum2==0)///*是唯一能增加字母的,如果雪花为0个就不能让字母增加所以输出impossible
46             cout<<"Impossible";
47         else///对于第一个*,输出需要增加的个数的第一个*前的字母
48         {
49             int flag=0;
50             for(int i=0; i<len; i++)
51             {
52                 if(a[i]==?||a[i]==*)
53                     continue;
54                 else if(a[i+1]==*&&flag==0)
55                 {
56                     cout<<a[i];
57                     for(int j=1; j<=n-sum; j++)
58                         cout<<a[i];
59                     i++;
60                     flag=1;
61                 }
62                 else cout<<a[i];
63             }
64         }
65     }
66 
67     return 0;
68 }

 

C. Postcard

标签:std   i++   gets   col   不可   ||   tca   namespace   个数   

原文地址:https://www.cnblogs.com/tp25959/p/10235799.html

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