zoukankan      html  css  js  c++  java
  • 带打印子结点的自底向上算法

    对我随笔的第一个算法做了一点点改动,可以打印出全部的切割长度,时间复杂度不算高

    #include<iostream>
    #include<time.h>
    #include<algorithm>
    
    using namespace std;
    int p[1000], r[1000], s[1000];
    int *EXTENDED_BOTTON_UP_CUT_ROD(int *p, int n)
    {
        r[0] = 0;
        int q = 0;
        for(int j = 1; j <= n; j++)
        {
            q = -1e8;
            for(int i = 1; i <= j; i++)
            {
                if(q < (p[i] + r[j - i]))
                {
                    q = p[i]+r[j-i];
                    s[j] = i;
                    r[j] = q;
                }
            }
        }
        return r, s;
    }
    /*PRINT_CUT_ROD_SOLUTION(p, n)
    {
    
    }
    */
    
    int main()
    {    
        int n = 0, q = 0; //q是最优收益
        clock_t start, finish;
        double duration = 0.0;
        int  *a, *b;
        p[0] = 0;
        p[1] = 1;
        p[2] = 5;
        p[3] = 8;
        p[4] = 9;
        p[5] = 10;
        p[6] = 17;
        p[7] = 17;
        p[8] = 20;
        p[9] = 24;
        p[10] =30;
        cout << "请输入钢管的长度:";
        cin >> n;
        start = clock();
        (a, b) = EXTENDED_BOTTON_UP_CUT_ROD(p, n);
        while(n > 0)
        {
            cout << s[n] << endl;
            n = n - s[n];
        }
        cout << "最优长度为:" << q;
        finish = clock();
        duration = (double)(finish - start )/CLOCKS_PER_SEC;
        cout << "运行时间为" << duration << endl;
    
        return 0;
    }

    }

  • 相关阅读:
    Android 课程设计
    第十个作业 简易通讯录
    第九个作业 QQ的账号密码保存
    第八个作业 QQ账号的保存
    第七个作业 Activity之间的数据回传
    第六个作业 应用列表
    第五个作业 背景换色
    JSP第一次作业
    安卓课设
    Android第八次作业
  • 原文地址:https://www.cnblogs.com/yican/p/3303249.html
Copyright © 2011-2022 走看看