最大和题解

· · 题解

题目简化

给你一个数,从它的个位到最高位进行操作,对于其每一位,你可以选择让他增加 1,减少 1(如果当前位是 0,减 1 后会退位) 或者不变。

分析

要使每一位的总和最大,我们可以对每一位进行判断。

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    while(n--){
        int a,sum=0;
        cin>>a;
        if(a==0) sum=1;//特判
        else {
            while(a!=0){
                if(a%10==0) a-=1;//当前值为0时
                else if(a%10!=9) a+=1;//当前值为1~8时
                //为9时不变
                sum+=(a%10);//加和
                a/=10;
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}