| ||||||||||
| 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