數據結構與算法

1.求最大子列和 

/**
*本段代碼的功能是求一個數組中的最大子列和
**/
pubic static int MaxSubseqSum(int[] a,int N){

    int ThisSum,MaxSum=0;
    for(int i=0;i<N;i++){
        ThisSum=0;//計算a[i]到a[j]的和
        for(int j=i;j<N;j++){
            ThisSum+=a[j];
            //比較每次ThisSum與MaxSum的大小,如果ThisSum比MaxSum大,將ThisSum的值賦給MaxSum
            if(ThisSum>MaxSum){
                MaxSum=ThisSum;
            }
        }
    }
    return MaxSum;

}

/**
*本段代碼核心思想:如果前a[i]的和ThisSum小於0那就將ThisSum至爲0,負數加任何數都一定比這個數小
**/
public static int MaxSubseqSum1(int A[],int N) {
		
		int ThisSum=0,MaxSum=0;
		for(int i=0;i<N;i++) {
			ThisSum+=A[i];
			if(ThisSum>MaxSum) {
				MaxSum=ThisSum;//發現更大的子列將其賦值給MaxSum
			}else if(ThisSum<0) {
				ThisSum=0;//如果前a[i]的和ThisSum小於0那就將ThisSum至爲0
			}
		}
		return MaxSum;
	}

2.多項式求和a1+a2x+a3x2...

/**
*解題思路a1+x(a2+x(a3+...x(an-1+x(an)))))
*n爲多項式的x的n次方,double[] a爲多項式的常數項,x爲爲底
**/
public static double mutilSum(int n,double[] a,double x){
    double p=a[n];
    for(int i=n;i>=1;i++){
        p=a[i-1]+x*p;
    }
    return p;
}


/**
*計算多項式的每一項依次累加
**/
public static double mutilSum(int n,double[] a,double x){
    double p=a[0];
    for(int i=1;i<n;i++){
        p+=a[i]*Math.Pow(x,i);
    }
    return p;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章