重做 USACO 1.1 贪婪的送礼者

  这题的话, 我用的是个结构体, 记录各个人.. 我错了的地方我注释了`
/*
LANG: C
ID: zqynux11
PROG: gift1
*/
#include <stdio.h>
#include <string.h>

struct people{
char name[15];
int given, got;
}pep[10];
int np;

int find(char *str)
{
int i;
for(i = 0; i < np; i++){
if(strcmp(str, pep[i].name) == 0){
return i;
}
}
return -1;
}

int main(void)
{
int i, j;
int t, tot, eve, mon;
char tmp[15];
freopen("gift1.in", "r", stdin);
freopen("gift1.out", "w", stdout);
scanf("%d\n", &np); /* 刚开始的时候输入忘记处理'\n'了 */
for(i = 0; i < np; i++){
gets(pep[i].name);
}

while(gets(tmp) != NULL){
t = find(tmp);
scanf("%d%d\n", &mon, &tot); /* 同上 */

if(tot != 0){
eve = mon / tot;
}
pep[t].got += mon - eve * tot;
pep[t].given += mon;

for(j = 1; j <= tot; j++){
pep[find(gets(tmp))].got += eve;
}
}
for(i = 0; i < np; i++){
printf("%s %d\n", pep[i].name, pep[i].got - pep[i].given);
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值