[华为机试练习题]11.最大递减数

来源:互联网 发布:mysql删除自增长 编辑:程序博客网 时间:2024/06/05 00:35

题目

给出一个非负整数,找到这个非负整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953。如果输入的数字为负数,返回-1。

代码

/*---------------------------------------*   日期:2015-06-29*   作者:SJF0115*   题目:最大递减数*   来源:华为上机-----------------------------------------*/#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;int getMaxDegressiveNum (int num){    if(num < 0){        return -1;    }//if    vector<int> vec;    string str = "";    int size = 0;    while(num){        str.insert(str.begin(),num % 10+'0');        vec.insert(vec.begin(),num % 10);        num /= 10;        ++size;    }//while    for(int i = 1;i < size;++i){        if(str[i] < str[i-1]){            vec[i] = vec[i-1] * 10 + vec[i];        }//if    }//for    int Max = -1;    for(int i = 0;i < size;++i){        if(Max < vec[i]){            Max = vec[i];        }//if    }//for    return Max;}int main(){    int n;    freopen("C:\\Users\\Administrator\\Desktop\\c++.txt","r",stdin);    while(cin>>n){        cout<<getMaxDegressiveNum(n)<<endl;    }//while    return 0;}
0 0
原创粉丝点击