Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求救!!!为什么老是Memory Limit Exceed,N次了,请大侠帮忙我是用链表做的,为什么还会Memory Limit Exceed? #include<iostream.h> #include<math.h> struct snode{ int change; int changevalue; snode *next; }; struct listlk{ snode *head; }; listlk change[101]; int classn[101],value[101],gold[101],changenum[101],permit,peoplen; void initlist(listlk &hl) {hl.head=NULL;} void firstinsertlist(listlk &hl,int item1,int item2) { snode *newp=new snode; newp->change=item1;newp->changevalue=item2; newp->next=hl.head; hl.head=newp; } void clearlist(listlk &hl) {snode *p=hl.head,*q; while(p!=NULL){ q=p; p=p->next; delete q; } hl.head=NULL; } int countgold(int n) { int i,temp; snode *p=change[n].head; while(p!=NULL) { if(classn[1]-classn[p->change]<=permit) { temp=p->changevalue+countgold(p->change); if(temp<value[n])value[n]=temp; } p=p->next; } return value[n]; } int main() { int i,j,temp1,temp2; cin>>permit>>peoplen; for(i=1;i<=peoplen;i++) { initlist(change[i]); cin>>gold[i]>>classn[i]>>changenum[i]; for(j=1;j<=changenum[i];j++) { cin>>temp1>>temp2; firstinsertlist(change[i],temp1,temp2); } value[i]=gold[i]; } cout<<countgold(1)<<endl; for(i=1;i<=peoplen;i++)clearlist(change[i]); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator