此背包代码显示浮点[float]无效类型错误.可能是什么原因
This knapsack code is showing a float[float] invalid type error. what may be the reason for this?
以下一块背包代码在第32,33行中显示了浮点[float]错误。为什么会发生这种情况?我无法找到原因。任何帮助都将是巨大的。
//maximum value of loot
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int maxi(int a , int b)
{
if(a>b) return a;
else return b;
}
int main()
{
int n,W,V=0;
float v,w,j;
vector<int> values;
vector<int> weights;
vector<float> vbyw;
cin>>n>>W;
for(int i = 0 ; i<n; i++)
{
cin>>v>>w;
values.push_back(v);
weights.push_back(w);
vbyw.push_back(float(v/w));
}
sort(vbyw.begin(),vbyw.end());
j = vbyw.size()-1;
while(W>0 && j>0)
{
W = W - maxi(w[j],W);
V = V + maxi(w[j],W)*vbyw[j];
j--;
}
cout<<V;
return 0;
}
问题是因为在第32行,33中,您的下标变量'w'代替'重量'数组。如果您将" J"用于索引而不是声明'int'而不是浮动。
我不确定您的算法是否可以工作。但是现在将运行。如果您需要在算法中的帮助,就可以发表评论。
//maximum value of loot
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int maxi(int a , int b)
{
if(a>b) return a;
else return b;
}
int main()
{
int n,W,V=0,j;// line i have changed
float v,w;
vector<int> values;
vector<int> weights;
vector<float> vbyw;
cin>>n>>W;
for(int i = 0 ; i<n; i++)
{
cin>>v>>w;
values.push_back(v);
weights.push_back(w);
vbyw.push_back(float(v/w));
}
sort(vbyw.begin(),vbyw.end());
j = vbyw.size()-1;
while(W>0 && j>0)
{
W = W - maxi(weights[j],W); // line i have changed
V = V + maxi(weights[j],W)*vbyw[j]; // line i have changed
j--;
}
cout<<V;
return 0;
}
相关文章:
- 我的模板类方法返回错误类型?
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- "auto"推断出 hashtable_policy.h 中的错误类型
- 设计自己的结果/两者之一:是否应该始终指定成功类型和错误类型
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 在 vscode 上编译错误.类型说明符是 C++11 扩展
- 不允许使用错误类型
- 当读取错误类型时,CIN覆盖我的初始化值
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 程序总是返回二进制'>>':找不到运算符,它采用错误类型的左操作数
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 涉及将要馈送的向量转换为execvp的错误类型
- C++中是否存在错误类型