题解 | #多多的数字组合#

多多的数字组合

http://www.nowcoder.com/questionTerminal/3d6b53e097ea41bda049d111f30db28e

多多的数字组合题解

分析

  • 1,2,3,4,5,6,7,8,9最多和为45,所以大于45输出-1小于10直接输出10到45一定有答案
  • 右边的数越大,结果越小。因为不同位数的话,位数越多,结果越大(1234>19)。同等位数,大的数要先选来确保最后选的数足够小(678>489)。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int sol(int n)
{
    int res=0;
    if(n>45)    return -1;
    if(n<10)    return n;
    vector<int> vec;
    for(int i=9;i>=1;i--)
        if(n&&n>=i)
        {
            n-=i;
            vec.push_back(i);
        }
    while(vec.size())
    {
        res=res*10+vec.back();
        vec.pop_back();
    }
    return res;
}

int main()
{
    int n,res=0;
    cin>>n;
    cout<<sol(n)<<endl;
}
全部评论

相关推荐

05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务