一道C++题目 谁帮忙改下啊 100分 采纳后还追加100
发布网友
发布时间:2023-07-12 04:27
我来回答
共4个回答
热心网友
时间:2024-12-05 05:29
你把一个j写成i了。
#include <iostream>
#include<vector>
using namespace std;
class PostmarksCollection{
public:
int numberOfDistinctPostmarks(vector <int> prices, vector <int> have) {
int sumPrices = 0; //总计价值变量
int tmpe=0; //排序中间变量
int number = 0; //收集种类变量
if(prices.size() >= have.size()){
// 拥有邮票总共价值
for (int i = 0; i < have.size(); i++) {
sumPrices = sumPrices + prices[have[i]];
}
}
else {
return 0;
}
if(have.size() == 0){
cout<<"你开始没有任何邮票,所以你也不能做任何事情!";
return 0;
}
else { //价格排序
for (int i = 0; i < prices.size(); i++) {
for (int j = i + 1; j < prices.size(); j++) {
if (prices[j] < prices[i]) {
tmpe = prices[i];
prices[i] = prices[j];
prices[j] = tmpe;
}
}
}
}
for (int i = 0; i < prices.size(); i++) {
if (sumPrices - prices[i] >= 0) {
number++;
sumPrices -= prices[i];
}
else {
break;
}
}
cout<<"最多可以收集"<<number<<"张不同的邮票!"<<endl;
return number;
}
};
int main(){
vector <int> prices;
vector <int> have ;
int a[10]={16,32,13,2,17,10,8,8,20,17};
int b[6]={7,0,4,1,6,8};
for(int i=0;i<10;i++){
prices.push_back(a[i]);
}
for(int j=0;j<6;j++){
have.push_back(b[j]);
}
class PostmarksCollection qiaoqian;
qiaoqian.numberOfDistinctPostmarks(prices,have);
return 0;
}
热心网友
时间:2024-12-05 05:29
一道C++题目 谁帮忙改下啊 100分 采纳后还追加100
悬赏分:100 - 离问题结束还有 14 天 23 小时
假设你的爱好是集邮。目前总共有N种不同的邮票,编号为从0到N-1.每种邮票的价钱被定义在数组vector<int> prices中(序号从0开始,数组的第i个元素表示第i种邮票的价格)。
你的目标是收集尽可能多种的邮票。你当前拥有的邮票存储在vector<int> have这个数组中。初始时,你没有钱,但是你可以卖掉已有邮票来买不同的邮票。返回你能收集到的不同种邮票的最大数量。
定义:
class: PostmarksCollection
method: numberOfDistinctPostmarks
Parameters: vector <int>, vector <int>
Returns: int
Method signature: int numberOfDistinctPostmarks(vector <int> prices, vector <int> have)
如下是我的程序 因为没用过这个vector 所以不太会使 哪位高人指点下啊
#include <iostream>
#include<vector>
using namespace std;
class PostmarksCollection{
public:
int numberOfDistinctPostmarks(vector <int> prices, vector <int> have) {
int sumPrices = 0; //总计价值变量
int tmpe=0; //排序中间变量
int number = 0; //收集种类变量
if(prices.size() >= have.size()){
// 拥有邮票总共价值
for (int i = 0; i < have.size(); i++) {
sumPrices = sumPrices + prices[have[i]];
}
}
else {
return 0;
}
if(have.size() == 0){
cout<<"你开始没有任何邮票,所以你也不能做任何事情!";
return 0;
}
else { //价格排序
for (int i = 0; i < prices.size(); i++) {
for (int j = i + 1; j < prices.size(); j++) {
if (prices[j] < prices[i]) {
tmpe = prices[i];
prices[i] = prices[j];
prices[j] = tmpe;
}
}
}
}
for (int i = 0; i < prices.size(); i++) {
if (sumPrices - prices[i] >= 0) {
number++;
sumPrices -= prices[i];
}
else {
break;
}
}
cout<<"最多可以收集"<<number<<"张不同的邮票!"<<endl;
return number;
}
};
int main(){
vector <int> prices;
vector <int> have ;
int a[10]={16,32,13,2,17,10,8,8,20,17};
int b[6]={7,0,4,1,6,8};
for(int i=0;i<10;i++){
prices.push_back(a[i]);
}
for(int j=0;j<6;i++){
have.push_back(b[j]);
}
class PostmarksCollection qiaoqian;
qiaoqian.numberOfDistinctPostmarks(prices,have);
return 0;
热心网友
时间:2024-12-05 05:30
你的程序只犯了点小错误,
for(int j=0;j<6;i++){ //这里是 j++ 不是i++
have.push_back(b[j]);
}
另外 既然用了vector 那排序的时候直接
sort(prices.begin(), prices.end()); 就可以了
其他的也没啥了。。
热心网友
时间:2024-12-05 05:31
你的程序的错误在
for(int j=0;j<6;i++){ //这里是 j++ 不是i++
have.push_back(b[j]);
}
vector是C++标准模板库中的部分内容这个你肯定了解
简单地说,vector是一个能够存放任意类型的动态数组
它有自己的方法和能够使用STL通用算法进行运算等操作
vector能够非常容易地添加数据,也能很方便地取出数据
当然也可以删除数据
访问vector中的数据,at()是我们的首选,因为at()进行了边界检查;当然你也可以像数组那样通过operator[]访问,但是这种方式不做边界检查
具体其他更多细节你可以找点STL方面的资料就明白了