Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

个位高手,什么我超时了,拜托

Posted by 031392 at 2004-02-22 21:17:29 on Problem 1012
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator