UVA 119.Greedy Gift Givers

题意:每个人的钱尽可能多的花掉,剩下的当做自己的收入.题目求得是每个人的纯收入,即1.从朋友那里得到的加上自己剩余的.2.如果朋友为0(没有送给任何人),则这部分钱不算自己的收入.

注意:每个输入组的数据要用一个空行隔开,但是不能单纯的在每组数据输入之后才打印空行,要在除了第一组之前答应空行.

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


struct Node 
{ 
	string name; 
    int give; 
    int rest; 
    int friends;//朋友数量 
    int friends_num[100];//保存朋友的下标 
}; 
   
int main() 
{ 
	int num;
	bool flag = false;
	while(cin >> num)
	{
		if(flag)
			cout << endl;
		else
			flag = true;
		
		int i,j,k,m; 
		Node person[10]; 
		string name; 
  
		for(i = 0;i < num;i++) 
		{ 
			cin >> person[i].name; 
		} 


		for(i = 0;i < num;i++) 
		{ 
			cin >> name; 


			for(j = 0;j < num;j++) 
			{ 
				if(name == person[j].name) 
				{ 
					cin >> person[j].give; 
					cin >> person[j].friends;
					break; 
				} 
			} 


			for(m = 0;m < person[j].friends;m++) 
			{ 
				cin >> name; 
				for(k = 0;k < num;k++) 
				{ 
					if (name == person[k].name)  
					{
						person[j].friends_num[m] = k;
						break;
					} 
				} 
			} 


		} 


		for(i = 0;i < num;i++)   
		{
			if(person[i].friends == 0)
			{
				person[i].rest = 0;
			}
			else
			{
				person[i].rest = person[i].give % person[i].friends;
			}
		} 


		for(i = 0;i < num;i++)   
		{   
			if(person[i].friends)   
			{ 
				for(j = 0;j < person[i].friends;j++) 
				{ 
					person[person[i].friends_num[j]].rest += (person[i].give / person[i].friends); 
				} 
			} 
		} 

		for(i = 0;i < num;i++) 
		{ 
			if(person[i].friends == 0)
			{
				cout << person[i].name <<" "<< person[i].rest << endl; 
			}
			else
			{
				cout << person[i].name <<" "<< person[i].rest - person[i].give << endl;
			}  
		}


	}
   return 0; 
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值