zoukankan      html  css  js  c++  java
  • 18. 求数组前n大元素之和。

     1 int func(int* arr,int len,int n)//求前n大的项之和
     2 {
     3     int sum = 0;
     4     int i;
     5     int temp;
     6     for(i = 1;i<=n;i++)//求最前三大值和
     7     {
     8          temp = func2(arr,len,i);
     9          printf("%d
    ",temp);
    10          sum += temp;
    11     }
    12     return sum;
    13 }
    14 //获取所有元素中第n大的元素//(实现求任意次最值功能)
    15 int func2(int* arr,int len,int n)//求第n大的元素
    16 {
    17     int i;
    18     int numTemp = ~(1<<31);//int能表示的最大正数
    19     for(i=1;i<=n;i++)
    20         numTemp = func1(arr,len,numTemp);
    21 
    22     return numTemp;
    23 }
    24 
    25 
    26 //求当前所有项中仅次于num的最大值
    27 int func1(int* arr,int len,int num)
    28 {
    29     int i;
    30     int subm = 1<<31;//int能表示的最小负数
    31     for(i = 0;i<len;i++)
    32     {
    33         if(arr[i] < num)
    34         {
    35            if(subm < arr[i])
    36                 subm = arr[i];
    37         }
    38     }
    39     return subm;
    40 }
    41 int main()
    42 {
    43     int arr[] = {11,69,1,77,22,81,9,12,55,0};
    44     //打印最大子序列之和
    45     printf("%d",func(arr,sizeof(arr)/sizeof(int),3));
    46 }
  • 相关阅读:
    POJ--2356 Find a multiple
    Trailing Zeroes (III)
    第一章 快速入门
    第二章 变量和基本类型
    第三章 标准库类型
    第四章 数组和指针
    第五章 表达式
    第六章 语句
    第七章 函数
    第八章 标准IO库
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9468000.html
Copyright © 2011-2022 走看看