其他分享
首页 > 其他分享> > 11.13

11.13

作者:互联网

一、

1.全局变量

定义在函数外面的变量是全局变量
全局变量具有全局的生存期和作用域
它们与任何函数都无关
在任何函数内部都可以使用它们,它的作用域是大于所有的函数的。

2.局部变量

定义在函数内部的变量。

只在本函数的作用域中才能使用

生存期也是由函数的结束而自动释放内存。

3.静态本地变量
在本地变量定义时加上static修饰符就成为静态本地变量
当函数离开的时候,静态本地变量会继续存在并保持其值
静态本地变量的初始化只会在第一次进入这个函数时做,以后进入函数时会保持上次离开时的值

静态本地变量拥有全局变量的生存期 和局部变量的作用域,是特殊的全局变量。

二、

 寻找最大和的连续子数组,可利用动态规划

首先开辟一个数组dp,用来记录num数组里上一步数与该步的数之间的最大值。

dp[i]=max(dp[i-1]+num[i],num[i])

再利用fr循环输出dp数组中的最大值,即连续子序列的和。

代码如下

#include<stdio.h>
int max(int a,int b);
int main(){
	int a[100];
	int dp[100];
	int n,i;
	int max_;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	dp[0]=a[0];//初始化dp数组
	for(i=1;i<n;i++){
	dp[i]=max(dp[i-1]+a[i],a[i]);//取得每一步dp的最大值,即对于第i个数是否加上进行判断,如果加上之后比a[i]大,那么就接着继续加,否则就从a[i]开始重新计算
	}

	for(i=0;i<n;i++){
		printf("%d\n",dp[i]);
	}
	max_=dp[0];
	for(i=0;i<n;i++){
		if(dp[i]>max_)
		max_=dp[i];//取得dp中的最大值
	}
	printf(" %d",max_);
}
int max(int a,int b){
	int t;
	t=a>b?a:b;
	return t;
}

标签:函数,int,max,11.13,全局变量,dp,变量
来源: https://blog.csdn.net/qq_61009788/article/details/121306292