[ハッシュ]貪欲ギバー

貪欲贈り主

考え


この質問は、シミュレーションを行うために使用することができますが、それは非常に面倒でエラーが発生しやすくなり、この質問は、最良の方法は、それを行うには、ハッシュテーブルでマップを使用することです。
オブジェクトマッピングは、int型のマップに文字列を作成し、名前によってインデックス付けするために、出力が完了した後に計算お金分散データは、であってもよいです。
さらに、順次にオブジェクトの名前を格納する文字列配列で、提案された名前を名前を保持する入力系列出力順と同じです。

コード

#include<iostream>
#include<map>
#include<string>
using namespace std;
int n,money,p,num;
string s,name[12];
map<string,int> cnt;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>name[i];
    for(int i=1;i<=n;i++)
    { 
        cin>>s>>money>>p;
        if(p!=0) 
            num=money/p;//特判
        else 
            num=0;
        cnt[s]-=num*p;
        for(int j=1;j<=p;j++)
        {
            string person;
            cin>>person;
            cnt[person]+=num;      
        }     
    }
    for(int i=1;i<=n;i++)
        cout<<name[i]<<" "<<cnt[name[i]]<<endl;
}

おすすめ

転載: www.cnblogs.com/gongdakai/p/11236549.html