題目:http://cerberus.delos.com:790/usacoprob2?S=gift1&a=Mwki8qnIJa3
/*
ID: chicc991
PROG: gift1
LANG: C++
*/
#include <fstream>
using namespace std;
class person
{
public:
string name;
int money ;//原始金錢
int giftg ;//送給每個人的禮物錢
int giftr ;//收到的禮物錢
person():money(0),giftg(0), giftr(0) {};
} person[11] ;
int main()
{
ifstream fin("gift1.in");
ofstream fout("gift1.out");
int per;//總人數
fin>>per;
int i;
string gname;
string rname;
for(i=0; i<per; i++)
{
fin>>person[i].name;
}
int idx;
for(idx=0; idx<per; idx++)
{
fin>>gname;
for(i=0; i<per; i++)
{
if(person[i].name == gname)
{
int j;//金錢數
int k;//需要送禮物的人數
int m;
int n;
fin>>j>>k;
if(k !=0 && j !=0)
{
person[i].money = j;
person[i].giftg = j/k;
person[i].giftr +=j-person[i].giftg*k;//非整數部分的錢放入收到做差
for(m=0; m<k; m++)
{
fin>>rname;
for(n=0; n<per; n++)
{
if(person[n].name == rname)
person[n].giftr += person[i].giftg;
}
}
}
}
}
}
for(i=0; i<per; i++)
{
fout<<person[i].name<<" "<<(person[i].giftr-person[i].money)<<endl;
}
fout.close();
fin.close();
return 0;
}
1.C++中類的成員變量不能直接初始化,詳見:http://www.9cpp.com/c-class-constructor-initialization-list/
#include<iostream>
#include<fstream>
#include<string>
#include<map>
using namespace std;
int main()
{
string names[50];
map <string,int> reci,given;
int np;
ifstream cin("gift1.in");
ofstream cout("gift1.out");
cin>>np;
for (int i=1;i<=np;i++)
cin>>names[i];
for (int i=1;i<=np;i++)
{
string temp;
int tempr,tempg,j;
cin>>temp;
cin>>tempg>>j;
for (int k=1;k<=j;k++)
{
string temp2;
cin>>temp2;
reci[temp2]+=tempg/j;
given[temp]+=tempg/j;
}
}
for (int i=1;i<=np;i++)
cout<<names[i]<<" "<<reci[names[i]]-given[names[i]]<<endl;
return 0;
}