分享到:
发表于 2010-06-08 20:39:54 楼主 | |
#include #define N 8 class list; class well class node bool node::judge(well &x) class list int list::createNewNode() void list::print() list::~list() |
|
楼主热贴
个性签名:无
|
发表于 2010-06-08 21:58:00 1楼 | |
前3张图代码如下: #include #include using namespace std; #define N 8 #define R 0.2 #define maxSize 6 class list; class well { private: double x,y; int num; bool b; public: well():b(true){} ~well(){} void input(){cin>>num>>x>>y;} void output(){cout< int getNum(){return num;} double getX(){return x;} double getY(){return y;} double distance(well &a){return sqrt(pow((x-a.getX()),2.0)+pow((y-a.getY()),2.0));} bool isInGroup(){return b;} }; class node { friend list; private: well w[N]; int len; node *next; public: node():len(0),next(NULL){} ~node(){} void print(); void insert(well &x){w[len++]=x;} bool judge(well&); bool isFull(){return len==maxSize;} }; bool node::judge(well &x) { int i; for(i=0;i return i==len; } void node::print() { for(int i=0;i cout< class list { private: node *head,*last; public: list(){head=new node;last=head;} ~list(); node *getNode(){return last;} int createNewNode(); void print(); }; int list::createNewNode() { node *p=new node; if(p==NULL) return 0; last->next=p; last=p; return 1; } void list::print() { node *p=head->next; while(p!=NULL) { p->print(); p=p->next; } } list::~list() { node *p=head->next; while(p!=NULL) { head->next=p->next; delete p; p=head->next; } delete head; } int isComplete(well *w) { int i; for(i=0;i return i; } int main() { well w[N]; list l; int i,j; for(i=0;i for(i=0;i if((i=isComplete(w))==N) break; l.createNewNode(); node *p=l.getNode(); p->insert(w); w.incorporate(); for(j=i+1;j if(p->isFull()) break; while(!w[j].isInGroup()) j++; if(p->judge(w[j])) { p->insert(w[j]); w[j].incorporate(); } } } l.print(); return 0; } |
|
发表于 2010-06-08 22:29:14 2楼 | |
用回朔求解吧!! | |
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见