zoukankan      html  css  js  c++  java
  • 求一个int型整数的两种递减数之和(华为2015笔试题及答案)

    给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数;2.递减数中各位数之和最大的数)之和。


    递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同的情况。


    最大递减数:所输入整数的所有递减数中值最大的一个。 如: 75345323,递减数有:75,753,53,53,532,32。那么最大的递减数为753。


    各位数字之和最大的递减数: 如75345323中的各递减数:75各位数之和=12(7+5=12),753各位数之和=15(7+5+3=15),53各位数之和=8(5+3=8),532各位数之和=10(5+3+2=10),32各位数之和=5(3+2=5)。那么各位数字之和最大的递减数为753。


    输出结果=最大递减数+各位数之和最大的递减数。(1506=753+753)

    #include<stdio.h>
    void processArr(char a[],int t)
    {
        int begin,end;
        int maxVal=0;
        int maxVal2=0;
        int maxSum=0;
        int loop;
        int tmpval=0,tmpsum=0;
        for(begin=t;begin>0;begin--)
        {
            end=begin-1;
            if(a[end]<a[begin])
            {
                for(;end>=0;)
                {
                    if(a[end-1]<a[end])
                        end--;
                    else
                    {
                        tmpval=0;
                        tmpsum=0;
                        for(loop=begin;loop>=end;loop--)
                        {
                            tmpval=tmpval*10+a[loop];
                            tmpsum=tmpsum+a[loop];
                        }
                        if(tmpval>maxVal)maxVal=tmpval;
                        if(tmpsum>maxSum)
                        {
                            maxSum=tmpsum;
                            maxVal2=tmpval;}
                        break;
    
                    }
                }
            }
    
        }
        printf("%d",maxVal+maxVal2);
    }
    void main()
    {
        int in;
        char ch[100];
        int i,j,t=0,y;
        scanf("%d",&in);
        if(in<0)in=0-in;
        for(j=in/10,i=in%10;j!=0;in=j,j=in/10,i=in%10,t=t+1)
        {
            ch[t]=i;
        }
        ch[t]=i;
    /*    for(y=0;y<=t;y++)
        {
            printf("%d",ch[y]);
        }
    */    
        processArr(ch,t);
    }
  • 相关阅读:
    Socket编程实现客户端与服务器一对一聊天
    HttpClient获取页面信息与Jsoup封装获取
    代码推送
    re正则
    MySQL 的主从复制
    关于前后端的缓存
    session/cookie/token
    如何保证缓存(redis)与数据库(MySQL)的一致性
    进程与线程(程序与任务)
    QA/QC
  • 原文地址:https://www.cnblogs.com/rednodel/p/4369174.html
Copyright © 2011-2022 走看看