您的位置:首页 > 其它

动态规划1

2012-08-14 22:44 211 查看
#include<stdio.h>

#include<stdlib.h>

#include<string>

int main()

{

    int sum = 11;

    int candidate[3] = {1, 3, 5};

    int s[12];

    memset(s, 0, sizeof(s));

    for(int i = 1; i <= 11; ++i)

    {

        int min = 100;

        for(int j = 0; j < 3; ++j)

        {

            if(i - candidate[j] < 0)

                break;

            if(s[i-candidate[j]]+1 < min)

            {

                min = s[i-candidate[j]]+1;

                s[i] = s[i-candidate[j]]+1;

            }

        }

        for(int k = 0; k <= 11; ++k)

            printf("%d ", s[k]);

        printf("\n");

    }

    return 0;
}

动态规划,简单来说就是遍历每种情况(但只在前一次状态最佳的基础上遍历所有的情况),所以该算法的浮渣度是N*M,N代表总和, M代表备选的个数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法