`

0811 求数组最大串

J# 
阅读更多
#include <stdio.h>

void maxLineSum(int array[],int len){
	int max_endinghere=0;
	int max_sofar=0;
	int idx_max_endinghere_left=0;
	int idx_max_endinghere_right=0;
	int idx_max_sofar_left=0;
	int idx_max_sofar_right=0;

	for(int i=0;i<len;i++){
		if(max_endinghere<0){
			max_endinghere=array[i];
			idx_max_endinghere_left=idx_max_endinghere_right=i;
		}else{
			max_endinghere+=array[i];
			idx_max_endinghere_right=i;
		}

		if(max_sofar<max_endinghere){
			max_sofar=max_endinghere;
			idx_max_sofar_left=idx_max_endinghere_left;
			idx_max_sofar_right=idx_max_endinghere_right;
		}
	}

	for(i=idx_max_sofar_left;i<=idx_max_sofar_right;i++){
		printf("%d,",array[i]);
	}

}

void main(){
	int array[8]={-5,-3,5,6,9,10,-3,-8};
	maxLineSum(array,8);

}

  

   扩展一下,求一个矩阵的最大子矩阵:

#include<stdio.h>

void getMaxMatrix(int array[][3],int row ,int col){
	int max_endinghere=0;
	int max_sofar=0;
	int max_endinghere_row_min=0;
	int max_endinghere_row_max=0;
	int max_endinghere_col_min=0;
	int max_endinghere_col_max=0;
	int max_sofar_row_min=0;
	int max_sofar_row_max=0;
	int max_sofar_col_min=0;
	int max_sofar_col_max=0;

	int *b=new int[row];
	
    int tmp=0;
	for(int i=0;i<col;i++){
		for(int j=i;j<col;j++){
			max_endinghere_col_min=i;
			max_endinghere_col_max=j;
			for(int k=0;k<row;k++){
				for(int m=i;m<=j;m++){
					tmp+=array[k][m];
				}
				b[k]=tmp;
				tmp=0;
			}
		
			for(k=0;k<row;k++){
				if(max_endinghere<0){
					max_endinghere=b[k];
					max_endinghere_row_min=max_endinghere_row_max=k;
				}else{
					max_endinghere+=b[k];
					max_endinghere_row_max=k;
				}
				

				if(max_endinghere>max_sofar){
					max_sofar=max_endinghere;
					max_sofar_row_min=max_endinghere_row_min;
					max_sofar_row_max=max_endinghere_row_max;
					max_sofar_col_min=max_endinghere_col_min;
					max_sofar_col_max=max_endinghere_col_max;
				}
			}

			max_endinghere=0;  //注意这里

		}
	}

	printf("max_sofar_row_min=%d,max_sofar_row_max=%d\n",max_sofar_row_min,max_sofar_row_max);
	printf("max_sofar_col_min=%d,max_sofar_col_max=%d\n",max_sofar_col_min,max_sofar_col_max);
	printf("max_sofar=%d\n",max_sofar);


}

void main(){
	int array[3][3]={{1,-3,2},{-5,3,8},{1,9,-2}};
    getMaxMatrix(array,3,3);

}

 

分享到:
评论

相关推荐

    求数组中的最大值!求数组中的最大值

    根据给定的文件信息,我们可以总结出以下关于“求数组中的最大值”的知识点: ### 1. 数组的基本概念 数组是一种基本的数据结构,用于存储相同类型数据的集合。在C#中,数组可以通过定义数组类型、分配内存并初始...

    求一个含有8个整数的数组中前3个最大值对应的下标

    本问题主要涉及数组的排序以及查找最大值的下标。下面将详细讲解这个过程,以及如何将其转换为二进制和十进制数。 首先,我们需要理解问题的核心:在一个包含8个整数的数组中找到前3个最大值的下标。这可以通过排序...

    JAVA数组与字符串详解[借鉴].pdf

    数组中各元素通过下标来区分,下标的最小值为0,最大值比元素个数少1。对于前面初始化的数组score,其10个元素分别为score[0],score[1],score[2],···,score[9]。 系统为数组的10个元素分配存储空间,形式如...

    MATLAB-求数组长度.docx

    总之,`length`函数在MATLAB中是获取一维数组元素数量、二维数组最大维度大小以及字符串字符数的重要工具。对于多维数组和特定类型的数组,可能需要结合使用`size`或其他函数来获取更详细的信息。理解并熟练运用这些...

    linux shell实现求一个多维数组中的最大和最小值

    对于多维数组,Shell 并没有直接的支持,但可以通过一维数组模拟多维数组的行为,例如使用字符串分割的方式。 ### 2. 实现之一:遍历每一行 示例脚本通过读取文件中的每一行,并对每一行中的数字进行处理来找到...

    delphi 字符串、数组函数

    High 函数返回数组下标的最大值。 示例代码: ``` var arrText: array[0..9] of Char; i: Integer; begin i := High(arrText); // i 的值则为 9 end; ``` 5. Insert 函数 Insert 函数插入一个字符(串)。该...

    数组字符串那些经典算法 面试用

    最大子序列和问题是数组算法中的经典问题,目标是从一维数组中找到和最大的连续子序列。例如,对于数组[0, -2, 3, 5, -1, 2],最大子序列和是9;对于数组[-9, -2, -3, -5, -3],最大子序列和是-2。 1. **动态规划法...

    实验五:Java数组与字符串

    找到数组中的最大值、最小值、元素总和以及它们的位置,可以通过遍历数组来实现。 【二维数组】 二维数组是数组的数组,可以理解为表格形式的数据结构。声明二维数组如`int[][] matrix = new int[3][4]`,表示一个3...

    Delphi数组,字符串操作

    ### Delphi 数组与字符串操作知识点详解 #### 一、Delphi 字符串操作 **1. Copy** - **功能**: `Copy` 函数用于从一个字符串中复制指定范围内的字符到新字符串中。 - **参数**: - 第一个参数: 被复制的字符串...

    第五章 数组、字符串与类库

    数组下标从0开始,最大下标为数组元素个数减1。 - 避免下标越界和未初始化的数组错误,例如在访问数组元素前确保已分配内存,且下标在合法范围内。 2. 二维数组 - 定义:如 `int a[][];` 或 `int[][] b;` - 创建...

    PHP获取数组最大最小值例子

    获取数组最大值和最小值的方法主要有两种:`max()`和`min()`函数。 1. `max()`函数: `max()`函数用于返回数组中的最大值。它接受一个数组作为参数,遍历数组并返回其中的最大值。例如,如果我们有一个名为`$...

    C语言实验报告——数组

    2. **字符数组与字符串**:字符数组用于存储字符串,字符串在C语言中是以空字符('\0')结尾的字符序列。理解字符数组与普通数组的区别,如字符串不可变性,以及掌握字符串处理函数,如`strlen()`、`strcpy()`、`...

    js 遍历数组取出字符串用逗号拼接;js 如何获取循环出来的最后一个i或者取i的最大值.pdf

    本示例中,我们关注的是如何遍历数组并将其中的字符串元素用逗号连接起来,同时如何获取循环中的最大索引或最后一个索引。下面我们将详细探讨这些知识点。 首先,我们来看如何遍历数组并进行字符串拼接。在这个例子...

    请用指针数组的方法将字符串排序

    这样,每一轮循环后,最大的字符串会“冒泡”到数组的末尾。这个过程重复进行,直到所有字符串都按字母顺序排列。 ```c void sort(char*nm[], int n) { char* tem; int i, j, k; for (i = 0; i ; i++) for (j =...

    关于数组的应用和字符串的讲解

    字符串可以有最大长度,如 `string[10]` 表示最多10个字符的字符串,或不指定长度的 `string`,默认长度为255。字符串的长度可以在运行时动态变化,可通过 `length` 函数获取。字符串的连接操作是 `+`,可以将两个或...

    matlab数组字符串详情介绍使用技巧.doc

    length(A) % 返回三维数组行列深度的最大值 切片三维数组 可以使用冒号运算符来切片三维数组,例如: CopyB = A(:,:,1) % 拿到第 1 个深度指定的这个二维数组 改变三维数组的形状 可以使用 reshape 函数来改变...

    求数组最大最小值方法适用于任何数组

    总结来说,这个方法提供了一种处理包含多种类型元素的数组求最大最小值的解决方案,但它的适用性取决于数组元素的特性。在实际应用中,根据具体的需求和数据类型,可能需要进一步优化或调整这个方法。

    输入10个字符串到一个字符串数组

    - **字符串转字符数组**:`char[] s = str.toCharArray();` 将字符串转换为字符数组。 - **字符数组转字符串**:`String st = new String(s);` 将字符数组转换回字符串。 #### 2.2 字符串排序 - **排序算法**:在 `...

    字符串 数组、字母和ASCII值应用

    选取一组一维数组,求出它的最大值和次大值,放入另一个一维数组中并返回。 十三、求两个数的最大公约数 =========================================== =======================================...

    C 语言中声明字符串数组

    数组的二维将限制字符串的最大长度。在这种情况下,我们任意定义一个宏常量-MAX_LENGTH 等于 100 个字符。整个数组可以用 {""} 符号初始化,将数组中的每个 char 元素清零。当在已经初始化的数组中存储字符串值时,...

Global site tag (gtag.js) - Google Analytics