اعداد را در ارایه گرفته عدد اول را حذف کرده وبه ترتیب یکی درمیان حذف کند تا فقط یک عدد باقی بماند
اعداد را در ارایه گرفته عدد اول را حذف کرده وبه ترتیب یکی درمیان حذف کند تا فقط یک عدد باقی بماند
Last edited by mahnaz2007; 26-05-2007 at 08:18.
یکم میشه بیشتر راجع به این الگوریتم ژوزف توضیح بدی؟
منظورتان همان مسئله معروف ژوزفوس است؟اگر حدس من دست باشد و اين همان مسئله باشد پس شما صورت مسئله را اشتباه نوشتيد
سلام مهناز خانم اگه کد به هم ریخته شده فقط کافیه کپی کنی و توی notpad پیست کنی مشکلش حل میشه
#include <iostream.h>
clrscr();
class Node {
int id;
Node *next;
Node (int i, Node *n=0): id(i), next(n) { }
friend class List;
};
class List {
Node *last;
public:
List ( ): last(0) { }
void addNode (int i);
void skipAndRemove (int delta);
void print ( );
};
void List::addNode (int i) {
if (!last) {
last=new Node(i);
last->next=last;
}
else {
Node *temp=new Node(i, last->next);
last->next=temp;
last=temp;
}
}
void List::skipAndRemove (int delta) {
if (delta>1) {
last=last->next;
skipAndRemove(delta-1);
}
else if (last->next==last) {
cout << last->id << ':' << endl;
delete last;
last=0;
}
else {
cout << last->next->id << ':' << endl;
Node *temp=last->next;
last->next=last->next->next;
delete temp;
}
}
void List::print ( ) {
if (!last) return;
for (Node *temp=last->next; ; temp=temp->next) {
cout << '\t' << temp->id;
if (temp==last) break;
}
cout << endl;
}
void main ( ) {
const int size=9, delta=5;
List list;
for (int j=1; j<=size; j++)
list.addNode(j);
list.print( );
for (int k=1; k<=size; k++) {
list.skipAndRemove(delta);
list.print( );
}
}
اگه کار کرد فقط یه چیز ازت می خوام یه مشکل بزرگ تو زندگیم دارم دعام کن همین.یا علی
سلام من برنامشو میخوامنوشته شده توسط mahnaz2007 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دوستان میشه یکی لطف کنه برنامه ژوزف رو به زبان ++C توی انجمن قرار بده؟
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)