Posted on 2010-09-10 21:39
acronix 阅读(230)
评论(0) 编辑 收藏 引用 所属分类:
qqy解题报告
//考察点: 结构体
//思路: 简单模拟 注意要先减掉准备分配出去的钱 然后再把余下的加回来
//提交情况: 1AC
//收获: p->mon+=mon/nf;是错误的写法 mon变成未定义的东西了 如果要更新 p->mon 应该写成 p->mon=p->mon+p->mon/nf;
//经验: 以后编程的时候要注意结构体的使用
//ACcode:
/*
ID: qiuqiyu1
PROB: gift1
LANG: C++
*/
#include<stdio.h>
#include<string.h>
typedef struct element
{
char nam[20];
int mon;
}node;
node* find(node memlist[],int memlist_len,char nam_cnt[])
{
int i;
int n=memlist_len;
node *a=memlist;
char *b=nam_cnt;
for(i=0;i<n;i++)
{
if(strcmp(b,a[i].nam)==0) return &a[i];
}
return NULL;// if not found
}
void dis_gift(node memlist[],int memlist_len, char nam[])
{
char nam_f[20];
int nm,nf;
int n=memlist_len,i;
node *p,*a=memlist;
//scanf("%s",nam);
scanf("%d%d",&nm,&nf);
p=find(a,n,nam);
(p->mon)-=nm;
if(nf!=0)(p->mon)+=(nm%nf);
for(i=0;i<nf;i++)
{
scanf("%s",nam_f);
p=find(a,n,nam_f);
(p->mon)+=(int)(nm/nf);
}
}
int main()
{
freopen("gift1.in","r",stdin);
//freopen("gift1.out","w",stdout);
node a[10];
int n,i;
char nam[20];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",a[i].nam);
a[i].mon=0;
}
for(i=0;i<n;i++)
{
scanf("%s",nam);
dis_gift(a,n,nam);
}
for(i=0;i<n;i++)
{
printf("%s %d\n",a[i].nam,a[i].mon);
}
return 0;
}