最大递减数

#include "Degressive.h"

#include <stdlib.h>

#include <string.h>

//给出一个非负整数,找到这个非负整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。

//如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953。

//如果输入的数字为负数,返回-1。

int getMaxDegressiveNum (int num)

{

// your code here...

if(num < 0)

{

return -1;

}

char c[128];

memset(c, 0,sizeof(char)*128);

itoa(num, c, 10);

int len = strlen(c);//获取c数组中字符的个数

int max = c[0] - ‘0‘;

int tempMax = c[0] - ‘0‘;

if(len == 1)

{

return tempMax;

}

for(int i = 1; i < len; ++i)

{

if(c[i -1] > c[i])//递减

{

tempMax = tempMax * 10 + (c[i] - ‘0‘);

}

else

{

if(tempMax >= max)

{

max = tempMax;

tempMax = c[i] - ‘0‘;

}

}

}

if(tempMax > max)//处理最后的可能的最大值

{

max = tempMax;

}

return max;

}

时间: 2024-12-29 11:18:21

最大递减数的相关文章

基础2--求五位数中的递减数

基础2--求五位数中的递减数 一.心得 二.题目 三.代码及结果 数学解法: c(10,5)=252 从十个数中选5个出来组成一个数就会符合题目要求 代码解法: 代码一: 1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int ans=0; 5 for(int i=10000;i<=99999;i++) 6 { 7 int n1=i/10000;//求最高位 8 int n2=(i%10000)/1000;//求次

生成9开头的按位递减数

这是数学之美系列的一个程序. 程序如下: /* 生成9开头的按位递减数 */ #include <stdio.h> int main(void) { long multinum=1; int i; for(i=1; i<=9; i++) { printf("%9ld*8+%d=%ld\n", multinum, i, multinum * 8 + i); multinum = multinum * 10 + (i + 1); } return 0; } 程序执行结果如

求最大递增数

题目: 描述:  输入一串数字,找到其中包含的最大递增数.递增数是指相邻的数位从小到大排列的数字.如: 2895345323,递增数有:289,345,23, 那么最大的递减数为345.  输入:  输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况  输出:  输出最大递增数  样例输入:  123526897215  样例输出:  2689 代码: #include "cstdio" #include "algorithm" #include &q

求一个int型整数的两种递减数之和(java)--2015华为机试题

题目描述: 给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况. 最大递减数:所输入整数的所有递减数中值最大的一个. 如: 75345323,递减数有:75,753,53,53,532,32.那么最大的递减数为753. 各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7

算法基础:最大递减数问题(Golang实现)

给出一个非负整数,找到这个非负整数中包括的最大递减数.一个数字的递减数是指相邻的数位从大到小排列的数字. 如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953. 假设输入的数字为负数,返回-1. 假设找不到递减数,也返回-1. 代码实现: package huawei import ( "fmt" "sort" "strconv" ) func Test5Base() { num := 431492

2014深圳华为机试剖析

题一: (1)给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况.最大递减数:所输入整数的所有递减数中值最大的一个. 如: 75345323,递减数有:75,753,53,53,532,32.那么最大的递减数为753. 各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7

2015华为机试

第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" #include<iostream> using namespace std; void solve(char *str , int n , in

2014华为校招机考模拟--求最大递增数

描述: 输入一串数字,找到其中包含的最大递增数.递增数是指相邻的数位从小到大排列的数字.如: 2895345323,递增数有:289,345,23, 那么最大的递减数为345. 运行时间限制: 无限制 内存限制: 无限制 输入: 输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况 输出: 输出最大递增数 样例输入: 123526897215 样例输出: 2689 答案提示: 一道基础的动态规划算法题,采用C++实现.代码如下: 1 #include <iostream> 2 us

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往