精华内容
下载资源
问答
  • 1、 给定一个数组,可以从数组中取出下标不连续任意个数,求可以取出的最大值, 例如:给出数组A[]={1,2,2,5,3,4,3}可以取出的最大和为2+5+4=11。 现再给定数组{3,9,7,5,1,3,1,2,7},能取出...

    1、 给定一个数组,可以从数组中取出下标不连续的任意个数,求可以取出的数的和的最大值,

    • 例如:给出数组A[]={1,2,2,5,3,4,3}可以取出的最大和为2+5+4=11。
    • 现再给定数组{3,9,7,5,1,3,1,2,7},能取出的数的和的最大值是24。

    2、分析
    在这里插入图片描述3、代码

    
        private static int dp1(int arr[],int len) {
            int ret=0;
            if (len==0) {
                return 0;
            }else if (len==1) {
                return arr[0];
            }else if (len==2) {
                return Math.max(arr[0],arr[1]);
            }else {
                for(int i=2;i<len;i++) {
                    int r1=dp1(arr,len-2)+arr[i];
                    int r2=dp1(arr,len-1);
                    ret=Math.max(r1,r2);
                }
                return ret;
    
            }
       }
    
    //优化
     private static int dp1(int arr[]) {
    	    int n = nums.length;
            if (n == 0) {
                return 0;
            }
            if (n == 1) {
                return nums[0];
            }
            int[] dp = new int[n];
            dp[0] = nums[0];
            dp[1] = Math.max(nums[0], nums[1]);
            for (int i = 2; i < n; i++) {
                dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
            }
            return dp[n - 1];
        }
    

    **

    2. 给定一个正整数s, 判断一个数组arr中,是否有一组数字加起来等于s。

    **

    /**
         *
         * 2. 给定一个正整数s, 判断一个数组arr中,是否有一组数字加起来等于s。
         */
        private static boolean isS(int[] arr,int i,int s) {
            if (i==0) {
                return arr[0]==s;
            }else if (s==0) {
                return true;
            }else if (arr[i]>s){
                return isS(arr,i-1,s);
    
            }else {
                return isS(arr,i-1,s)||isS(arr,i-1,s-arr[i]);//又可分为两种情况,arr[i-1]>s
            }
        }
        private static boolean isS2(int[] arr,int s) {
            boolean set[][]=new boolean[arr.length][s+1];
            set[0][arr[0]]=true;
            int i=0;
            int j=0;
            for (i = 0; i < arr.length ; i++) {
                set[i][0]=true;
            }
            for (i = 1; i < arr.length; i++) {
                for (j = 1; j < s+1; j++) {
                    if (arr[i]>j){
                        set[i][j]=set[i-1][j];
                    }else {
                        boolean a = set[i-1][j];
                        boolean b = set[i-1][s-arr[i]];
                        set[i][j]=a||b;
                    }
                }
    
            }
            return set[i-1][j-1];
        }
    

    神奇的口袋:

    有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。

    输入描述:

    输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。

    输出描述:

    输出不同的选择物品的方式的数目。

    示例1 输入

    3 20 20 20

    输出

    3

    代码:

    import java.util.Scanner;
    
    public class Main{
        static int[] arr=new int[21];
        static int n;
        private static int count(int v,int i) {
            if(v==0) {
                return 1;
            }if(i==n||v<0) {
                return 0;
            }
            
            return count(v-arr[i],i+1)+count(v,i+1);//选arr[i]和不选arr[i]
            
        }
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            n=in.nextInt();
            
            for (int i = 0; i < n; i++) {
               arr[i]=in.nextInt();
            }
            System.out.println(count(40,0));
        }
    }
    
    展开全文
  • //从一个整数数组中取出最大的整数,最小整数,总和,平均值 //声明一个int类型的数组,并且随意的赋初值 int[] nums={1,2,3,4,5,6,7,8,9,0}; //声明两个变量用来存储最大值和最小值 int max=int.MinValue;//nums[0]...

    //从一个整数数组中取出最大的整数,最小整数,总和,平均值
    //声明一个int类型的数组,并且随意的赋初值
    int[] nums={1,2,3,4,5,6,7,8,9,0};
    //声明两个变量用来存储最大值和最小值
    int max=int.MinValue;//nums[0];
    int min=int.MaxValue;//nums[0];
    int sum=0;
    //循环的让数组中的每个元素跟我的最大值,最小值进行比较
    for(int i=0;i<nums.Length;i++)
    {
    if(nums[i]>max)
    {
    max=nums[i];
    }
    if(nums[i]<min)
    {
    min=nums[i];
    }
    sum+=nums[i];
    }
    Console.WriteLine("这个数组的最大值是{0},最小值是{1},总和是{2},平均值是{3}",max,min,sum,sum/nums.Length);

    转载于:https://www.cnblogs.com/iceberg2008/p/4081089.html

    展开全文
  • //定义输入:其实是一个可以保存10个整数的数组 //使用循环遍历,生成10个随机数,放入每个元素中//打桩,数组中的内容 //定义输出变量 //将数组中一个元素取出,保存在max中,当靶子 //遍历数组,第二个...

     

    //定义输入:其实是一个可以保存10个整数的数组
    //使用循环遍历,生成10个随机数,放入每个元素中
    //打桩,数组中的内容
    //定义输出变量
    //将数组中第一个元素取出,保存在max中,当靶子
    //遍历数组,从第二个元素[1]开始,都和max比较
    //如果任何元素超过max,就取而代之
    //输出max

    转载于:https://www.cnblogs.com/zmdc/p/5256248.html

    展开全文
  • 个数组练习

    2016-11-24 20:07:00
    9、数组 一次性存储多个相同类型的变量。 语法: 数组类型[] 数组名=new 数组类型... ////练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值 ////声明一个int类型的数组 并且随意的赋初值 //int...

    9、数组 一次性存储多个相同类型的变量。

    语法: 数组类型[] 数组名=new 数组类型[数组长度];

    ***数组的长度一旦固定了,就不能再被改变了



    #region 练习1 练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值 声明一个int类型的数组 并且随意的赋初值 //int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 声明两个变量用来存储最大值和最小值 //int max = int.MinValue;//nums[3]; //int min = int.MaxValue;//nums[0]; //int sum = 0; 循环的让数组中的每个元素跟我的最大值、最小值进行比较 //for (int i = 0; i < nums.Length; i++) //{ // //关于在循环中nums[i]的理解方式 // //1、代表数组中当前循环到的元素 // //2、代表数组中的每个元素 // //如果数组中当前循环到的这个元素 比我的max还要大,则把当前这个元素赋值给我的max // if (nums[i] > max) // { // max = nums[i]; // } // if (nums[i] < min) // { // min = nums[i]; // } // sum += nums[i]; //} //Console.WriteLine("这个数组的最大值是{0},最小值是{1},总和是{2},平均值是{3}", max, min, sum, sum / nums.Length); //Console.ReadKey(); #endregion 练习3:数组里面都是人的名字,分割成:例如:老五|老胡|小夏…” //string[] names = { "老五", "老胡", "老牛", "老王", "老马" }; 解体思路:通过一个循环,获得字符串数组中的每一个元素。 然后,将这个每一个元素都累加到一个字符串中,以|分割 //string str = null; //for (int i = 0; i < names.Length - 1; i++)//五个人,直插入四个|,所以减1. //{ // str += names[i] + "|"; //} //Console.WriteLine(str + names[names.Length - 1]); //Console.ReadKey(); #region 练习4 //练习4:将一个整数数组的每一个元素进行如下的处理: //如果元素是正数则将这个位置的元素的值加1, //如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。 //int[] nums = { 1, -2, 3, -4, 5, 6, 0 }; 解题思路:通过一个循环,获得数组中的每一个元素。 对每一个元素进行判断 //for (int i = 0; i < nums.Length; i++) //{ // if (nums[i] > 0) // { // nums[i] += 1; // } // else if (nums[i] < 0) // { // nums[i] -= 1; // } // else // { // //nums[i] += 0; // } //} //for (int i = 0; i < nums.Length; i++) //{ // Console.WriteLine(nums[i]); //} //Console.ReadKey(); #endregion //练习5:将一个字符串数组的元素的顺序进行反转。 //第i个和第length -i-1个进行交换。 string[] names = { "a", "b", "c", "d", "e", "f", "g" }; for (int i = 0; i < names.Length / 2; i++) { string temp = names[i]; names[i] = names[names.Length - 1 - i]; names[names.Length - 1 - i] = temp; //names.Length=7,names.Length-1=6,names.Length-1-0=6,第0个和第6个互换。 } for (int i = 0; i < names.Length; i++) { Console.WriteLine(names[i]); } Console.ReadKey();

     

    转载于:https://www.cnblogs.com/hao-1234-1234/p/6099276.html

    展开全文
  • 在内存维护一个长度为TOP的数组,根据堆性质,每一个节点都比他左右子节点小, 先取出前TOP个数并构建小顶堆,然后将所有数据与堆顶比较大小,如果比堆顶小就直接丢弃, 如果比堆顶大则替换堆顶,并且重新构建...
  • 输入n个整数中读入一个数a 容器已有数字少于k个,则直接把a放入容器 容器已有k个数字满了,找出容器k个数的最大值m,与a比较 m<a替换m=a m>a抛弃a 由于heap已排列好,只需弹除第k+1个元素如25,26...
  • 给定一整数数组,求连续数组的最大值,例如: 1, -2, 3, 5, -3, 2 最大值为8 0, -2, 3, 5, -1, 2 最大值为9 分析 《编程之美》给出算法很精炼,然而解释却比较复杂,如果“分级...
  • 数组的练习题

    2019-10-07 12:46:55
    //练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值 声明一个int类型的数组 并且随意的赋初值 int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //声明两个变量用来存储最大值和最小值 int max = ...
  • 数组习题

    2015-09-01 11:24:00
    练习1:从一个整数数组中取出最大的整数 练习2:计算一个整数数组的所有元素的和。 练习3:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世” 练习4:将一个整数数组的每一个元素进行如下的处理:...
  • 07.数组的练习

    2016-11-02 12:22:00
    练习1:namespace _12.数组的练习01{ class Program { static void Main(string[] args) { //从一个整数数组中取出最大的整数,最小整数,总和,平均值 int[] array = new int[] {13,23,35,23,64,76,72,25,63...
  • 高效做法可以实现o(nlogk),借助一个容器,容量k,将数组的读入k个数存放在容器,然后继续访问数组后面数,将其后每个数和容器中最大值比较,比最大值小则剔除容器中最大值,同时将该数放入容...
  • 数组练习题

    2019-09-26 19:23:01
    练习1:从一个整数数组中取出最大的整数 1 int[] numbers = { 3, 5, 6, 37, 19, 98, 65, 34, 54, 43 };//定义一个数组 2 int max = numbers[0];//定义max的值初始化 3 int min = numbers[0]; ...
  • 一、数组  1.数组就是个容器,里面可以存放任意类型数  2....  2)var arr = new Array();构造函数定义方式,如果括号中有一个整数,该正数代表...取出数组中的数据:数组名[下标],下标0开始,最大下标...
  • C#数组(小练习)

    千次阅读 2014-05-11 18:48:38
    练习1:从一个整数数组中取出最大的整数 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 练习 { class Program { static void Main(string[] args) {
  • Create Maximum Number

    2016-10-31 18:07:25
    对于这个数组中的任意两个元素a和b,如果a和b是一个数组中取出的元素,那么a和b在新数组中的相对位置必须与原数组中的相对位置相同。这个数组可以代表一个十进制整数,求出一个数组,它代表的整数最大。 这个...
  • OJ 系列之整数排序

    千次阅读 2016-01-25 19:17:27
    1、问题描述实现输入一组大于等于0的整数, 根据从小到大的顺序排序后输出,排序后有连续数时, 只输出连续数中最小和...1、首先输入字符串inputStr按规律取出数字,然后存储到一个数组中(大小为50,初始值全部为
  • 2将一个数组中的数循环左移 3输入若干学生的成绩计算平均分并输出低于平均分的学生成绩 4任意n个数允许有重复中删除某一个数k 5输入整数n将其各位数字取出后重新组合成一个新的最大的整数 6将一个数组中的数逆序...
  • 2将一个数组中的数循环左移 3输入若干学生的成绩计算平均分并输出低于平均分的学生成绩 4任意n个数允许有重复中删除某一个数k 5输入整数n将其各位数字取出后重新组合成一个新的最大的整数 6将一个数组中的数逆序...
  • 2将一个数组中的数循环左移 3输入若干学生的成绩计算平均分并输出低于平均分的学生成绩 4任意n个数允许有重复中删除某一个数k 5输入整数n将其各位数字取出后重新组合成一个新的最大的整数 6将一个数组中的数逆序...
  • 查找最小k元素

    2013-12-03 14:36:03
    题目:输入n个整数,输出其中最小k个。例如:输入1,2,3,4,5,6,7,8,则... 我们可以从数组中取k个元素,建一个k个元素的最大堆,继续数组里面取出元素,如果该元素大于堆中最大元素,那么舍弃,继续;如果小
  • 定义一个序列的“数”为最大的整数x,使得序列至少一半的数字大于等于x,求这个取出来的序列的数最大值? 思路 滑动窗口的方式处理,获取最大值、最小值作为数左右边界,然后取中间值,遍历下标0-》k对应...
  • linq中的cast()及OfType()

    千次阅读 2018-01-31 11:55:30
    DataTable dt=...........//获取数据库中取出的数据(假设只有一条记录) //Cast()用来将非泛型的序列转换为泛型的序列 ...如:一个object数组中整数和字符串,现在想找出其中最大的数 object[] obj
  • 第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型大小? 1.3 因为C语言没有精确定义类型...7.6 我使用fgets将文件所有行读入一个数组,为什么读入每一行都是...
  • 最大和问题

    2019-10-03 23:56:33
    题目描述:给出n的整数序列,请你序列截出k段,每段都连续,段之间可以不连续,使这k段的所有整数的和最大. 解题思路:动态规划,开两二维数组,DP1[i][j]和DP2[i][j],前者为包含第i数的前i数...
  • 《你必须知道495C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.24 我在一个文件定义了一个extern数组,然后在另一个文件使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main正确...
  • 1.24 我在一个文件定义了一个extern数组,然后在另一个文件使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main正确...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
热门标签
关键字:

从一个数组中取出最大的整数