算法导论15章-钢条切割

#include <stdio.h>
#include <malloc.h>

void print_array(int *A, int n)
{
    int i;
    for(i = 0; i <= n; i++){
        printf("%4d", A[i]);
    }
    printf("\n");
}

int steel_cut(int *A, int n)
{
    int *r;
    int *s;
    r = (int *)malloc(sizeof(int) * n);
    s = (int *)malloc(sizeof(int) * n);
    int i,j,q;
    for(i = 1; i <= n; i++){
        q = -1;
        for(j = 1; j <= i; j++){
            if(q < A[j]+r[i-j]){
                q = A[j]+r[i-j];
                s[i] = j;
            }
        }
        r[i] = q;
    }
    printf("%d\n", r[n]);
    for(i = 0; i <= 10; i++){
        printf("%4d", i);
    }
    printf("\n");
    print_array(A, 10);
    print_array(s, n);
    return 1;
}

int main()
{
    int A[11] = {0,1,5,7,11,13,16,16,20,24,30};
    int r;
    steel_cut(A, 7);
    //printf("%d\n", r);
    return 0;
}

转载请注明:小Y » 算法导论15章-钢条切割

赞 (0) 评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址