重做 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;
}

你可能感兴趣的:(C++,c,C#,J#)