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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值