C语言 压岁钱

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:42:25
大家好:
我有个问题请求帮助:现在有 N 个人,他们都有小孩,春节来了,他们要发压岁钱给朋友的小孩,而他们自己的小孩也会收到压岁钱。为了简单,他们在发压岁钱的时候,使用以下的计算方法,譬如某甲有 100 块,它要给另外三个人的小孩发压岁钱,则每个小孩会分到 100/3 = 33 块,剩余的 1 块就不发了。

给你这 N 个人的信息,以及他们把压岁钱发给了谁的小孩,请你计算他们每个人的小孩收到的压岁钱和他们发出去的压岁钱的差额是多少。

输入
第 1 行: 一个整数 N(2 <= N <= 10)

第 2..N+1 行: 每行是一个人名,每个名字不超过 14 个字符

第 N+2..结束: N 组按照以下规则组织的数据:
组中的第一行为送出压岁钱的人名。
第二行包括两个数字,第一个是该人有多少钱(0~2000),第二个是它要把钱发给几个人的小孩,用 NGi 表示(0 ≤ NGi ≤ N-1).
如果 NGi 为非零,则下面的 NGi 行会列出接受压岁钱的人的名字。

输入样例
5
dave
laura
owen
vick
amr
dave
200 3
laura
owen
vick
owen
500 1
dave
amr
150 2
vick
owen
laura
0 2
amr
vick
vick
0 0
输出格式

输出为 N 行,每行上是一个人名与它收到和送出的压岁钱之差额,这两项之间有一个空格。这 N 行的顺序应该和输入中第 2~N+1 行的顺序相同。

输出样例
dave 302
laura 66
owen -359
vick 141
amr -150

#include <iostream>
#include <map>
#include <string>
using namespace std;

string name[10];
int money[10];

int main()
{
int n;
map<string,int> M;
cin>>n;
fill(money,money+n,0);
for(int i=0;i<n;i++){
cin>>name[i];
M[name[i]]=i;
}
string s1,s2;
while(cin>>s1){
int t1,t2;
cin>>t1>>t2;
if(t2)money[M[s1]]-=t1/t2*t2;
for(int i=0;i<t2;i++){
cin>>s2;
money[M[s2]]+=t1/t2;
}
}
for(int i=0;i<n;i++){
cout<<name[i]<<" "<<money[i]<<endl;
}
}

#include <stdio.h>
#include <map.h>
#include <string.h>
using namespace std;

string name[10];
int money[10];

int main()
{
int n;
map<string,int> M;
scanf("%d",n)