映射中的分配最终为0
Assignments in a map end up as 0?
我是C++的初学者,最近我正在参加一个关于送礼的USACO培训项目。然而,虽然输出应该显示每个参与者的姓名和他们各自的现金金额,但我的结果总是全为零。这是我的代码:
/*
ID: afuhrtr1
PROG: gift1
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <map>
using namespace std;
int main() {
stringstream ss;
ofstream fout ("gift1.out");
ifstream fin ("gift1.in");
int np;
fin >> np;
string people [np];
map<string, int> amounts;
for (int i = 0; i < np; i++)
{
string name;
fin >> name;
//amounts[name]=0;
people[i] = name;
}
while (fin.good())
{
string giver;
fin >> giver;
string twoNumbers;
fin >> twoNumbers;
int spacePos = twoNumbers.find(' ');
int amount;
ss << twoNumbers.substr(0, spacePos);
ss >> amount;
int npgiven;
ss << twoNumbers.substr(spacePos+1);
ss >> npgiven;
for (int i = 0; i < npgiven; i++)
{
string name;
fin >> name;
amounts[name]+=(amount/npgiven);
}
amounts[giver]+=(amount % npgiven - amount);
}
map<string, int>::iterator it;
for (int i = 0; i < np; i++)
fout << people[i] << " " << amounts[people[i]] << endl;
return 0;
}
我假设问题是将东西分配给map元素,或者调用fin.good()。
此外,以下是竞争场景:
一群NP(2≤NP≤10)名字独特的朋友决定交换金钱礼物。这些朋友中的每一个可能会也可能不会给其他任何朋友或所有朋友一些钱。同样,每个朋友可能会也可能不会从任何或所有其他朋友那里收到钱。你在这个问题上的目标是推断出每个人付出的钱比他们得到的钱多多少。
送礼的规则可能与你预期的不同。每个人都会留出一定数额的钱来送礼,并将这笔钱平均分配给所有送礼的人。没有零头钱,所以在2个朋友中除以3,剩下1个的朋友每人1个——剩下的1个留在送礼者的"账户"中。
在任何一组朋友中,有些人都比其他人付出更多(或者至少可能有更多的熟人),有些人比其他人有钱。
给定一组朋友,其中没有一个人的名字超过14个字符,该组中每个人在礼物上花费的钱,以及每个人向其赠送礼物的朋友(子)列表,可以确定该组中的每个人赠送的礼物比收到的多(或少)多少。
输入格式第1行:单个整数,NP第2..NP+1行:每行包含一个组成员的名称线NP+2..结束:NP组线的组织方式如下:组中的第一行告诉将要送礼物的人的名字。该组中的第二行包含两个数字:送礼者将分为礼物的初始金额(在0..2000范围内),然后是送礼者将送礼的人数NGi(0≤NGi≤NP-1)。如果NGi为非零,那么接下来的每一行都会列出礼物收件人的姓名。
USACO没有任何类型的调试器,所以我不确定我是否能有效地检查逻辑错误,但没有编译器错误。
这是你的主要问题。
你肯定可以在有调试器的环境中运行这些代码吗?有免费提供的C++开发环境。如果没有调试器,就无法编写C++代码。StackOverflow不是一个有效的调试器;)
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- C++ 将元素分配给映射值时访问错误
- 包含动态分配内存作为值的映射的取消定位速度有多快?
- 如果可能,标准::映射分配是否静态
- 如何在 OpenCL 中使用缓冲区分配和映射内存机制
- 我如何正确地为std ::映射分配内存
- 我如何将输入分配给在 for 循环中设置的映射功能
- 映射和设置总是一次分配一个项目吗
- 静态映射中动态分配的对象.删除必要的
- C++:通过从映射向量分配映射实例来填充映射的映射
- 映射中的分配最终为0
- C 索引中的字符串映射而无需分配
- 循环访问映射并删除动态分配的元素
- 将无序映射与动态分配的用户定义类一起使用
- STL映射是如何分配的?堆叠或堆
- 任何查找分配给映射的内存大小的方法
- 两个映射之间的分配-移动语义和性能
- 动态分配映射指针值
- 在类成员中创建和分配映射
- 如何使用malloc分配映射键