loong qiang
像风一样自由

最大子序列求和问题

算法一

#include <stdio.h>

int maxsubsequence(const int a[], int size) {
    int maxsum = 0, i = 0, j, thissum, first, last;
    for (; i < size; i++) {
        thissum = 0;
        for (j = i; j < size; j++) {
            thissum += a[j];
            if (thissum > maxsum) {
                maxsum = thissum;
                last = j;
                first = i;
            }
        }
    }
    for (j = first; j <= last; j++) {
        if (j != first && a[j] > 0)
            printf("+");
        printf("%d", a[j]);
        if (j == last)
            printf("=");
    }
    printf("%d", maxsum);
    return maxsum;
}

int main(void) {
    int a[] = { 2, -9, 3, 22, 7, -13, 4, 7, 18 };
    maxsubsequence(a, 9);
    return 0;
}

 

posted on 2014-06-17 14:27  loong qiang  阅读(233)  评论(0编辑  收藏  举报