baidu_38729492 2017-05-10 06:36 采纳率: 0%
浏览 803

0-1背包问题 C++ 一直编译不通过 求大神指出错误

#include
using namespace std;

const int MAX = 250;
int V[MAX][MAX];

int max(int a, int b)
{
if (a >= b)
return a;
else
return b;
}

int Knapsack(int n[], int vi[], int c, int x,int choose[])
{
for (int i = 0; i <= x; i++)
V[i][0] = 0;
for (int j = 0; j <= c; j++)
V[0][j] = 0;

for (int i = 1; i <= x; i++)
{
    cout << i << "  " << n[i] << "  " << vi[i]<<"   ";

    for (int j = 1; j <= c; j++)
    {
        if (n[j] > j)
        {
            V[i][j] = V[i - 1][j];
            cout << "[" << i << "]" << "[" << j << "]" << "=" << V[i][j]<<" ";
        }

        else
        {
            V[i][j] = max(V[i - 1][j], V[i - 1][j - n[j]] + vi[i]);
            cout << "[" << i << "]" << "[" << j << "]" << "=" << V[i][j] << "   ";
        }

    }
    cout << endl;
}

int j = c;
for (int i = x; i > 0; i--)
{
    if (V[i][j] > V[i - 1][j])
    {
        choose[i] = 1;
        j = j - n[i];
    }
    else
        choose[i] = 0;
}
for (int i = 1; i <= x; i++)
    cout<< choose[i];
cout << endl;

return V[x][c];

}
int main()
{
int c, x;
cout << "请输入背包容量;";
cin >> c;
cout << "请输入物品个数:";
cin >> x;
int *n = new int[x+1];
int *vi = new int[x+1];
int *choose = new int[x+1];
cout << "请分别输入物品重量";
for (int i = 1; i <= x; i++)
cin >> n[i];
cout << "请分别输入物品价值:";
for (int i = 1; i <= x; i++)
cin >> vi[i];
int k = Knapsack(n, vi, c, x,choose);
cout << "物品最大价值为:" << k << endl;

}

  • 写回答

2条回答 默认 最新

  • shen_wei 2017-05-10 06:54
    关注
     #define max(a,b)            (((a) > (b)) ? (a) : (b))
    
    int max1(int a, int b)  
    

    定义与#define的相同了。。。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题