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