zoukankan      html  css  js  c++  java
  • C. Postcard

    就是直接肛就对了

     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 }
  • 相关阅读:
    2018面试题
    输入对象和数量制造批量假数据
    前端监控和前端埋点方案设计--摘抄
    给页面上所有的a标签增加随机数每次点击保证最新
    给所有ajax请求增加随机数
    打印2018年的日历
    为图片添加文字 canvas
    地图搜索地图定位标注
    地图拖拽定位
    智能搜索地图
  • 原文地址:https://www.cnblogs.com/tp25959/p/10235799.html
Copyright © 2011-2022 走看看