zoukankan      html  css  js  c++  java
  • 整数v,从高位到低位,取c位数,得到最大数 (其中:v>=10^c)

      题目如上,例子v=22312324,c=3,求得最大数为334。

      用自己的想法实现了一遍,如果你有更好的方法的话,欢迎不吝赐教。

    我的思路是,先将整数v按位存入一个数组,数组低位为整数高位,如num[]={2,2,3,1,2,3,2,4}。求得最大数有c位数,v_max[]={……}。

    每次从数组num[]取得一位最大数,存入v_max[]相应位。如求v_max[0],因为v_max有c位,所以可取num[0]~num[len-c-0]中的最大数(len为v的位数),记录最大数下标为num_i,再求v_max[1],可取num[num_i+1]~num[len-c-1]中取最大数,……如此取c个数就得到v_max[]。

     1 #include<iostream>
     2 using namespace std;
     3 
     4 
     5 void fun(const int num[],int len,int v_max[],int c,int max_i,int num_i)
     6 {
     7     if(max_i==c) return;
     8     int j=num_i;
     9     int temp=-1;
    10     for( ;j<=len-c+max_i;j++){
    11         if(temp<num[j]){
    12             temp=num[j];
    13             num_i=j;
    14         }
    15     }
    16     v_max[max_i]=temp;
    17     fun(num,len,v_max,c,++max_i,++num_i);    
    18 }
    19 int main()
    20 {
    21     int v,c,num[100],v_max[100],len; //len为整数v的位数,v_max[]保存最大数 
    22     v=223123214;
    23     int v1=v;
    24     len=0;
    25     
    26     while(v1>0){    /*将整数v按位存入数组num[]*/ 
    27         num[len++]=v1%10;
    28         v1/=10;
    29     }    
    30     for(int i=0;i<len/2;i++)
    31         swap(num[i],num[len-1-i]);
    32         
    33     cout<<"v="<<v<<endl;
    34     while(cin>>c){
    35         if(c>len){
    36             cout<<"error:v<10^c"<<endl;
    37         }
    38         else{
    39 
    40             fun(num,len,v_max,c,0,0);
    41             for(int i=0;i<c;i++)
    42                 cout<<v_max[i];
    43             cout<<endl;
    44         }
    45     }
    46 
    47 }
  • 相关阅读:
    自动化运维 Expect
    C 语言Struct 实现运行类型识别 RTTI
    Mac 安装配置rz、sz
    Mac Vim + ctags 实现多目录跳转
    Mac 使用Sublime Text 3 搭建C开发环境
    this.$createElement用法
    判断一个数字在数组中出现次数
    iview的table:自定义table表格中列头的标题和点击事件(renderHeader)
    js计算不精确问题
    js 日期时间的格式化
  • 原文地址:https://www.cnblogs.com/johnleo/p/v_c_max_num.html
Copyright © 2011-2022 走看看