求最大数

2016-02-19 14:03 6 1 收藏

下面图老师小编要向大家介绍下求最大数,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

一 问题描述
  设有n个正整数(n=20),将它们联成一排,组成一个最大的多位数。程序输入:n,程序输出:n个数连接成的多位数。二 问题分析
  可以将问题这样变化一下:
  比如我输入的是  123 2 33 1006 12这样几个数字
  我先找出最大的数字的位数为四位,再将所有的数字变成四位数:
  1230 2000 3300 1006 1200 
   然后进行排序 
  3300 2000 1230 1200 1006
   这样将后面加上的0去掉的序列不就是最大数字吗?
  于是最大数字就是
  332123121006
  因为以下程序用的INT的类型所以只在-32728~32727间有效,假如想要更大范围须改成long类型 三 C程序#define MAXSIZE 100
  #includestdio.h
  int max(int a[],int i) /*判定出最大数字的位数*/
  {int m;
   int size();
   m=a[i];
    for(;i=0;i--)
    if(a[i]m)
    m=a[i];
   return(size(m));
  }int size(int interger)  /*判定出这个要组合数字的位数*/
  {
     if(interger10000)
       return 5;
    else if(interger1000)
      return 4;
    else if(interger100)
     return 3;
   else if(interger10)
     return 2;
   else
    return 1;
  }int change(int i ,int maxsize)  /*将本数字变成和最大数相同位数的数字*/
  {
    int size();
    switch(maxsize-size(i))
      {case 0:break;
       case 1:i=i*10;break;
       case 2:i=i*100;break;
       case 3:i=i*1000;break;
       case 4:i=i*10000;break;
       default:printf("error");
      }
    return i;
  }main()
  {
   int a[MAXSIZE],b[MAXSIZE],i,j,count,temp,s;
    printf("Please input some intergers and input -1 to finish");
   for(i=0;iMAXSIZE;i++)
     {
        scanf("%d",&a[i]);
        if(a[i]0)
           break;
     }
  count=i-1;
  s=max(a,count);
  for(i=count;i=0;i--)
      b[i]=change(a[i],s);
  for(j=0;j=count-1;j++)  /*用冒泡法对变化数排序,其实本质是在对原组合数字进行排序*/
    for(i=0;i=count-1;i++)
     {
         if(b[i]b[i+1])
           {
              temp=a[i];
              a[i]=a[i+1];
              a[i+1]=temp;
       temp=b[i];
              b[i]=b[i+1];
      b[i+1]=temp;
           }
     }
  printf("max interger =");
  for(i=0;i=count;i++)
     printf("%d",a[i]);
  }
   
   四 实验结果输入:56 2 1        输出:5621输入:21 35 2      输出:35221
  

来源:http://www.tulaoshi.com/n/20160219/1606074.html

延伸阅读
首先要改变饮食习惯,吃完饭后不要立即坐下或趴睡,最好能保持站立的形式,可以选择散散步或整理一些东西,如此除了减少脂肪堆积外,还能帮助消化,因为饭后30分钟内,如果保持不动的状态,最容易形成腹部脂肪。少喝啤酒,不要暴饮暴食,还有就是多锻炼。以下是锻炼的几个方法:1、原地跑,见效点:紧实大腿肌肉,在室内或过道挑选一块约一平方...
/* Author:Wu Xiuxiang; Email:imessage@126.com */ public static void Main() { //写入大对象到SqlServer FileStream fs = new FileStream("C:\\test.bmp",FileMode.OPen,FileAccess.Read); BinaryReader br = new BinaryReader(fs); SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=sa;datab...
不生孩子易患卵巢癌(图) 不生孩子易患卵巢癌 医生指出:未生育的妇女,卵巢肿瘤的发病率,高于有生育史的妇女www.tulaoshi.com;女性如果有一次完整的孕育过程,能增强防范卵巢癌、乳腺癌等妇科肿瘤的免疫力。 怕身材走样、忙于工作和事业、只想过二人世界,“丁克一族”为拒绝生育总能找出各种各样的借口。然而,在您决定做丁克族之前,不...
520怎么求约会?   520怎么求约会?小伙伴们在520里面肯定有很多小伙伴约吧,特别的相约肯定不如偶然来的约会要好,看别的小伙伴发布的约会想求约会?现在小编就教小伙伴们520怎么求约会。 1)点击打开点击上方的; 2)点击你要求约会的下方即可。
C++代码如下:  #include algorithm #include vector #include cstdio using namespace std; typedef  unsigned int Type; enum{ BASE_DATA = 10000, MAX_NUM = 100000 , MAX_SIZE = MAX_NUM+1000}; struct MulOpt { Type data1; MulOpt(Type x):data1(x){} inline Type operator()(Type y) { return data1*y; } }; struct Conver...

经验教程

404

收藏

80
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部