zoukankan      html  css  js  c++  java
  • 背包问题

    今晚本来是在学C++的,看到了Q群上一位朋友写的背包问题出错,帮他改了下。。。结果。。。

    总结下:

    1、想好了再写

    2、细心再细心

    3、自己的代码,自己会介意!

    View Code
    #include <iostream>
    using namespace std;
    int main()
    {
        //背包问题,利用了局部优化,w为商品的重量,W[0]应该不是商品,表示没有商品装下
        int n,v,i=0,j=0,temp;
        while(cin>>n>>v)
        {
            int *w=new int[n];
            for(i=1;i<=n;i++)//重量,这应该是从i=1开始
            {
                cin>>w[i];
            }
            int **val=new int*[n+1];//二维数组
            for (i=0;i<=n;i++)
            {
                val[i]=new int[v+1];
            }
            for (i=0;i<=n;i++)//初始化列
            {
                val[i][0]=0;
            }
            for (j=0;j<=v;j++)//初始化行
            {
                val[0][j]=0;
            }
            for(i=1;i<=n;i++)//主循环
            {
                for(j=1;j<=v;j++)
                {
                    val[i][j]=val[i-1][j];
                    if(w[i]<=j)
                    {
                        temp=val[i-1][j-w[i]]+w[i];
                        if(temp>val[i][j])
                        val[i][j]=temp;
                    }
                    cout<<"val["<<i<<"]"<<"["<<j<<"]:"<<val[i][j]<<endl;
                }
            }
            int *c = new int[n];
            for (i=n;i>=0;i--)//这只为:i>=0
            {
                c[i]=0;
            }
            j=v;
            for (i=n;i>0;i--)
            {
                if(val[i][j]>val[i-1][j])
                {
                    c[i]=1;
                    j-=w[i];
                }
            }
            cout<<val[n][v]<<endl;
            for (i=0;i<=n;i++)
            {
                if (c[i]==1)//这里的判断错了,为c[i]==1
                {
                    cout<<w[i]<<"    ";
                }
            }
            cout<<endl;
        }
        std::system("pause");
    }
    别让别人来告诉你,你成不了才,如果你有梦想的话,就要去捍卫它---当幸福来敲门
  • 相关阅读:
    SQL server不同服务器之间复制数据 枫
    jQuery对Select的操作集合[终结篇] 枫
    php操作cookie搜集 枫
    mysql省市县数据库 枫
    sqldate转换格式 枫
    sql清除数据的各种情况 枫
    asp.net后台控制HtmlMeta 枫
    mysql代码段 枫
    php时间操作 枫
    HTTP协议header头域 枫
  • 原文地址:https://www.cnblogs.com/yihua/p/2960577.html
Copyright © 2011-2022 走看看