精华内容
下载资源
问答
  • * 一个整形数组中有正数也有负数, * 数组中连续一个或多个组成子数组, * 每个子数组有一个和, * 求所有子数组中和的最大值 * 输入{ 1, -2, 3, 10,-4, 7, 2, -5 }; * 输出 18 * 基于思想:...
    public class HuaWeiTest6 {
    	/*
    	 * 一个整形数组中有正数也有负数, 
    	 * 数组中连续一个或多个组成子数组,
    	 * 每个子数组都有一个和,
    	 * 求所有子数组中和的最大值 
    	 * 输入{ 1, -2, 3, 10,-4, 7, 2, -5 }; 
    	 * 输出 18 
    	 * 基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对
    	 * 整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,total记录当前值。 
    	 * 此时 若和大于maxSum 则用maxSum记录下来
    	 * 
    	 * 
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int input[] = { 1, -2, 3, 10, -4, 7, 2, -5 };
    		int input1[] = { 6, -3, -2, 7, -15, 1, 2, 2 };
    		int input2[]={};
    		System.out.println(FindGreatestSumOfSubArray(input1));
    	}
    
    	public static int FindGreatestSumOfSubArray(int[] array) {
    		if (array.length == 0) {
    			return 0;
    		}
    		if (array.length > 0) {
    			int need = array[0];
    			int Maxneed = array[0];
    			for (int i = 1; i < array.length; i++) {
    				if (need < 0) {
    					need = array[i];
    				} else {
    					need += array[i];
    				}
    				if (need > Maxneed) {
    					Maxneed = need;
    				}
    			}
    			return Maxneed;
    		}
    		return 0;
    
    	}
    
    }

    展开全文
  • 负数大小比较的玄机(小于等于)

    千次阅读 2012-08-06 20:17:00
    所有变量为 reg[9:0] 的变量也就是,,正数为0--511 负数为1023--512 ,,, -1为1024-1023 -512为1024-512=512 一、第一组测试 a7=2*B_K;a5=-N_K;a6=2*(-5);1、if(-2<=-34 && -2>=512)a3=1;else ...

     所有变量都为 reg[9:0] 的变量也就是,,正数为0--511 负数为1023--512    ,,, -1为1024-1023     -512为1024-512=512

    一、第一组测试

    a7=2*B_K;
     a5=-N_K;
     a6=2*(-5);
     1、if(-2<=-34 && -2>=512)a3=1;else a3=2;
     2、if((2*B_K<=-N_K && 2*B_K>=512))a4=1;else a4=2;
     3、if((2*B_K<=-N_K) && (2*B_K>=512))a5=1;else a5=2;

    可以看到a7=-2;

     1、条件满足 a3=2;

     2、3、条件不买足

    二、第二组测试

    a7=2*B_K;
    a5=-N_K;
    1、if(2*B_K<=-N_K)a3=1;else a3=2;
    2、if(2*B_K>=512)a6=1;else a6=2;

    3、if((K==0)&& (a5>=a7) && (a7>=512))a4=1;else a4=2;

    这下终于对了:

    a7=1022=-2;

    a5=-N_k=-34=1024-34=990;

    条件1、和条件2、未成立、、、、、、、、、、

    原因是:比较大小时不能直接用负数,应该有一个中间变量转换,比较的时候直接比较不进行转换;

     

     

    结论::::::有负数的比较大小,应该加入中间变量作为缓存,不能直接像C语言那样直接计算比较,否则会出错

     

    转载于:https://www.cnblogs.com/TFH-FPGA/archive/2012/08/06/2625681.html

    展开全文
  • 输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和...

    题目描述:

    输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
    原理:如果前几个数加和小于零,那么前面的数所做的全是无用功所以清零

    public int maxSubSum(int[] a) {
    	int sum = 0;
    	int maxSum = 0;
    	for(int i=0; i<a.length; i++) {
    		sum += a[i];
    		if(sum > 0){
    			if(sum > maxSum) {
    				maxSum = sum;
    		    }    
    		} else {
    		    sum = 0;
    		}    
    	}
    	return maxSum;
    }
    
    展开全文
  • 一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,那么...

    一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度为O(n)。

    例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,那么最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18

    由于本人C\C++水平有限,所以使用java语言实现。

    思路:从数组的后面排除小于0或者累加小于0的,用max记录被排除的子数组的和的最大值。

    /***
     * @author lingxiasandu
     */
    public class Test {
    
        public static void main(String[] args) {
            
            int[] a = {1, -2, 3, 10, -4, 7, 2, -5};
            int max = MaxSum(a);
            System.out.println(max);
        }
        
        /***
         * @param a 源数组
         * @return 返回子数组和的最大值
         */
        public static int MaxSum(int[] a){
            int sum = 0;
            int max = 0;
            for(int i=0;i<a.length;i++){
                sum = sum + a[a.length-i-1];
                if(a[a.length-i-1] >= 0){
                   if(max < sum){
                      max = sum ;
                    }
                }
                if(sum < 0){
                     sum = 0;
                 }
            }
            return max;
        }
    
    }

     

     

    展开全文
  • 1. 我们将数组中所有小于等于 00 的数修改为 N+1N+1; 2.我们遍历数组中的每一个数 xx,它可能已经被打了标记, 因此原本对应的数为 |x|,其中 ∣∣ 为绝对值符号。如果 ∣x∣∈[1,N], 那么我们给数组中的第 |x| -...
  • 所有负数都小于零,所有正数都小于零。因此,-1小于100;-100小于-1。 浮点值NaN(not a number))大于任何其他数值,且等于自身。 日期时间值 较迟的日期或时间戳被认为大于较早的日期或时间戳。例如,等价于'29...
  • 1.输入一个整形数组,数组里有正数也有负数。 2.数组中连续的一个或多个整数组成一个子数组,每个子数组有一个和。 3.求所有子数组的和的最大值。要求时间复杂度为O(n) 二、设计思想 先随机生成一个数组,可以...
  • PAT A1144

    2019-03-10 00:11:43
    先遍历完所有负数,再逐个遍历正数。 一开始未考虑 所有数字都小于零的可能。 后来又未考虑 int数组会把所有未被定义的元素赋值为0 #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &...
  • 一个整形数组,有正数负数,求所有子数组的和的最大值。...当和小于0时说明当前的子数组和为负数,不管谁加上副作用,可直接抛弃。不用担心从这段中间某位置加起会不会好。我们原则是一负就抛弃,如果负数在前面
  • 题目要求:输入一个整型数组,数组里有正数也有负数 数组中连续的一个或多个整数组成一个子数组,...数组里有正数负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后...
  • 最大子串和

    2019-10-06 07:41:31
    一个一个加,只要判断总和会不会小于0就行,小于0就接着往下重新计算和,因为如果所有数据里有正数的话,单个正数肯定更大,而如果负数的话,单个负数也比负数和大。 var n,i,t,m:longint; a:array[0..200000]...
  • 题目要求:输入一个整型数组,数组里有正数也有负数 数组中连续的一个或多个整数组成一个子数组,...数组里有正数负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后...
  • 想了想是可以贪心过的,先遍历一遍,记录大于等于0的数的偶数个数和奇数个数,然后进行从大到小排序,如果所有都小于零,那么遍历一下输出第一个奇数;如果奇数个数是奇数,直接把大于零的数全部加起来即可;如果...
  • 对于子序列,如果负数或者0一定成立,因为绝对值不可能小于0,所以要想最长,就要包含所有负数和0,对于正数,子序列中最多存在一个,因为如果大于一个,两个整数的绝对值肯定小于本身。 所以只需要看原来...
  • 补码运算的本质

    2020-04-20 11:44:21
    补码运算的本质数学原理就是取模求余 设二进位表示的位数共有nnn位,那么实际上所有的运算结果对2n2^n2n求余 比如说有两个数aaa和bbb,他们相加的...所以还是假设aaa和bbb正数(均小于2n2^n2n,如果比2n2^n2...
  • 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组和中...如果所有元素都小于0,则需找到所有元素中最大的一个元素返回。 参考代码:#in
  • 离散化

    2019-08-15 10:23:37
    在这种情况下,如果每个数据元素的具体值并不重要,重要的是他们之间的大小关系的话,我们可以先对这些数据进行离散化,使数据中的最大值尽可能小且保证所有数据正数。 void Discret(int n,int *a) //放入数组...
  • 如果所有都小于0,那么认为最大和为0,并且输出整个序列的首尾元素。如果有多组答案,输出下标最小的那组。 思路 在读入时累加和到nowSum,如果nowSum为负,说明一组正数的和加上若干个负数的和为负数,答案的子...
  • CodeForces - 300A

    2018-02-12 12:15:41
    题意:给出N个数,要求把它们分到三个集合中,使三个集合所有元素的积分别满足:小于零;大于零;等于零。题目保证有解。思路:题目保证有解,说明每个集合元素至少有一个,而且我们可以得知,至少有一个负数和一...
  • 个人作业1-数组

    2019-03-08 17:45:00
    题目:返回一个整数数组中最大子数组的和 ... 因为是连续的一个或多个整数组成的子数组,因此如果数组的前端为负数的话可以忽略掉,从正数部分开始累加,如果当累加结果小于等于0时,可以从新进行累...
  • Linux seq命令详解

    千次阅读 2019-04-04 12:43:43
    seq命令用于产生从起始值到结束值之间、固定增量的所有浮点数。当起始值与结束值相等,则不管增量为任意非零数,输出起始值。若起始值与结束值不相等,且中间不包含至少一个增量,则输出为空。当增量为负数时,若...
  • 作业-数组

    2019-03-10 16:21:00
    即输入一个整形数组,数组里面又正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组有一个和。球所有子数组的最大值。 我开始的思路是首先是选一个数组,然后这个数组中的最大值一定在这个和...
  • 在前面的描述中,符号 sgn(expression) 表示 signum 数学函数,根据 expression 的值为负数、0 还是正数,该函数分别返回 -1、0 或 1。 实现程序必须确保对于所有的 x 和 y 而言,存在
  • 这道题要注意的就是要所以的数不一定正数。 用简单的dp来写如果你想用数组来存也可以,但是要把所有的数分成大于零和小于零两个数组,然后再dp。 但是我发现可以哦用一种map来它可以存字符为下表,当然也能用...

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

所有负数都小于正数