zoukankan      html  css  js  c++  java
  • 杭电OJ 1003

    这是一道简单的DP(dynamic programing)问题。计算最大子序列。

    在解题时需要注意考虑完全,还有就是算法的完整程度。

    可以用这两个去测试完整度:-1,-2,-3,-4,-5;0,0,0,0,0

    在计算中需要使用到动态规划的状态以及状态转移方程。

    在这题中,状态是子序列的和,状态转移方程是,某个数与以某个数结尾的子序列中的最大子序列的大小比较

     1 for(i = 1;i < n;i++){
     2         if(num[i] > d[i - 1] + num[i]){//如果num[i]大于num[i] + d[i - 1](状态),那就不用考虑状态,直接进行状态转移
     3             endex[i] = index[i] = i + 1;
     4             d[i] = num[i];
     5         }
     6         else{//反之,继续累计
     7             endex[i] = i + 1;
     8             index[i] = index[i - 1];
     9             d[i] = d[i - 1] + num[i];
    10         }
    11     }

    贴上AC代码:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(){
    	int i = 0;
    	int n = 0;
    	int r = 0;
    	int max;
    	int maxi = 0;
    	int maxe = 0;
    	int casen = 0; 
    	int *num;
    	int *d,*index,*endex;
    	scanf("%d",&casen);
    	while(casen --)
    	{
    		if(r) printf("
    ");
    		scanf("%d",&n);
    		num = (int *)malloc(sizeof(int) * n);//动态开辟内存,避免空间不足
    		d = (int *)malloc(sizeof(int) * n);
    		index = (int *)malloc(sizeof(int) * n);
    		endex = (int *)malloc(sizeof(int) * n);
    
    	
    		for(i = 0 ;i < n;i ++){
    			scanf("%d",&num[i]);
    		}
    	index[0] = 1;
    	endex[0] = 1;
    	d[0] = num[0];
    	for(i = 1;i < n;i++){
    		if(num[i] > d[i - 1] + num[i]){
    			endex[i] = index[i] = i + 1;
    			d[i] = num[i];
    		}
    		else{
    			endex[i] = i + 1;
    			index[i] = index[i - 1];
    			d[i] = d[i - 1] + num[i];
    		}
    	}
    	max = d[0];
    	maxi = 1;
    	maxe = 1;
    	for(i = 1;i < n;i ++){
    		if(max < d[i]){
    			max = d[i];
    			maxi = index[i];
    			maxe = endex[i];
    		}
    	}
    	r ++;
    		printf("Case %d:
    ",r);
    		printf("%d %d %d
    ",max,maxi,maxe);
    	
    	}
    	
    	
    	return 0;
    }
    

      

    THISSKY出品,原文链接:http://www.cnblogs.com/zhuhongjongy/p/4948594.html 

  • 相关阅读:
    vue-router 动态路由
    vue-router 路由配置
    vue通信之子父组件通信
    vue组件通信之父组件主动获取子组件数据和方法
    vue 笔记,ref 及 $event 事件对象
    vue组件通信之非父子组件通信
    vue组件通信之父子组件通信
    localStorage使用总结(转载)
    jQuery 实现复选框全选、反选及获取选中的值
    jQuery 对象与 Dom 对象转化
  • 原文地址:https://www.cnblogs.com/zhuhongjongy/p/4948594.html
Copyright © 2011-2022 走看看