posts - 64, comments - 4, trackbacks - 0, articles - 0

USACO Greedy Gift Givers

Posted on 2010-09-10 21:39 acronix 阅读(220) 评论(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)==0return &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;
}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理