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 |
个位高手,什么我超时了,拜托#include<iostream.h> int k; struct NODE{ bool is; NODE *link; }; NODE *make(){//make a loop list of length 2*k NODE *head,*ptr,*t; head=new NODE; head->is=true; ptr=head; for(int i=0;i<k-1;i++){ t=new NODE; t->is=true; ptr->link=t; ptr=t; } for(i=0;i<k;i++){ t=new NODE; t->is=false; ptr->link=t; ptr=t; } ptr->link=head; return head; } void des(NODE *head){//destroy the list NODE *t,*ptr=head->link; while(ptr!=head){ t=ptr->link; delete ptr; ptr=t; } delete head; } bool judge(int m){//see if m is ok NODE *ptr=make(),*t; int i,j; for(i=0;i<k;i++){ for(j=0;j<m-2;j++) ptr=ptr->link; t=ptr->link; if(t->is==true){ des(ptr); return false; } else { ptr->link=t->link; ptr=ptr->link; delete t; } } des(ptr); return true; } struct node{ int data; node *link; }; int main() { int i; node *head=new node,*ptr=head,*t; while(1){ cin>>k; if(k==0){ ptr->link=NULL; break; } for(i=k+1;;i++) if(judge(i)){ t=new node; t->data=i; ptr->link=t; ptr=t; break; } } head=head->link; while(head!=NULL){ cout<<head->data<<endl; head=head->link; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator