zoukankan      html  css  js  c++  java
  • 【2008】 求数列最大累加和的子序列

    Time Limit: 3 second
    Memory Limit: 2 MB

    一个有10个元素、元素值在[-100,100]之间的整数数列,数列的数据通过键盘输入,从中找出最大累加加的子序列。

    例如10个数分别如下:10 6 25 30 -3 -29 -61 5 -61 52
    所得结果为10+6+25+30=71。

    如果10个数分别如下:-69    -62    50    -64    84    1    -29    13    17    -20
    所得结果为84+1+-29+13+17=86

    Input

    输入文件有10行,每行输入一个元素

    Output

    输出只有一行,输出最大累加和的子序列的各元素及和

    Sample Input

    10
    6
    25
    30
    -3
    -29
    -61
    5
    -61
    52
    

    Sample Output

    10+6+25+30=71
    

    【题解】

    这是个动态规划动态转移方程是

    if (累加和 >0) THEN F[I] = MAX(F[I-1],累加和) ELSE F[I] = MAX(F[I-1],0);

    只要在扫描的时候顺便记录一下当前累加和的起点和终点就可以

    【代码】

    #include <cstdio>
    
    int a[11],f=1,t=1,max;
    
    void input_data()
    {
    	for (int i = 1;i <= 10;i++) //输入10个数据 
    		scanf("%d",&a[i]);
    	max = a[1];//先让最大值等于第一个数 初始的时候f = 1,t = 1;表示从1开始到1的一个累加和 
    }
    
    void get_ans()
    {
    	int tf = 1, tt = 1; //这个tf和tt是随时更新的序列的开头和结尾 
    	int now = a[1]; //这时当前的累加和 
    	for (int i = 2;i <= 10;i++)
    		{
    			if (now + a[i] >0) //如果累加当前这个数字后累加和>0,那么就继续累加 同事尝试更新最大值。 
    				{
    					now += a[i];
    					tt = i;	//更新实时的尾序列 f=from  t = to 
    					if (now > max) //更新最大值后要改变答案的头序列和尾序列 
    						{
    							f = tf;
    							t = tt;	
    							max = now;
    						}
    				}
    					else   //如果累加后 <0 则 这个数不取效果是最好的 如 99 -100 加到第二项后=-1还不如直接取一个99; 
    						{
    							tf = i+1; //直接跳到下一个数尝试找更好的累加序列。 
    							tt = i+1;
    							now = 0;					
    						}
    		}
    }
    
    void output_ans()
    {
    	for (int i = f; i <= t-1;i++)
    		printf("%d+",a[i]);
    	printf("%d=%d",a[t],max);	
    }
    
    int main()
    {
    	input_data();
    	get_ans();
    	output_ans();
    	return 0;	
    }


      


     

  • 相关阅读:
    SpringBoot security关闭验证
    BCryptPasswordEncoder 判断密码是否相同
    SpringBoot 通过jjwt快速实现token授权
    lombok的@Accessors注解3个属性说明
    lombok使用教程
    linux系统下将php和mysql命令加入到环境变量中的方法
    mysql常用的一些命令,用于查看数据库、表、字段编码
    配置windows 系统PHP系统环境变量
    MYSQL导入导出.sql文件
    windows下mysql 控制台操作
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632489.html
Copyright © 2011-2022 走看看