Gym 100801E Easy Arithmetic (思维题)

题目:传送门。(需要下载PDF)

题意:给定一个长度不超过1000的字符串表达式,向该表达式中加入'+'或'-',使得表达式的值最大,输出该表达式。

题解:比如300-456就改成300-4+56,遇到二位数以上的减数的情况就变成-首位+剩下的,这样会使得表达式值最大。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
string c;
int main()
{
    freopen("easy.in","r",stdin);
    freopen("easy.out","w",stdout);
    cin>>c;
    int len=c.length();
    bool flag=0;
    for(int i=0;i<len;i++)
    {
        if(c[i]=='-'||c[i]=='+') flag=0;
        if(flag) putchar('+');
        if(c[i]!='0') flag=0;
        if(c[i-1]=='-'&&i>=1) flag=1;
        putchar(c[i]);
    }
    puts("");
    return 0;
}

 

posted @ 2016-08-08 14:05  Ritchie丶  阅读(344)  评论(0编辑  收藏  举报