标签:函数 int max 11.13 全局变量 dp 变量
一、
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。