
约瑟夫收到莲蓬时,他的心里是怎样想的,请写出他的心理活动
先普及一下知识,什么是约瑟夫问题
约瑟夫问题即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始从新报数,数到m的人在出列,如此循环,直到所有人出列为止。
最后按出列顺序输出。
public int[] Jose(int total,int start,int alter){ int j,k=0; int[] count=new int[total+1]; int[] s=new int[total+1]; for(int i=0;i=2;i--) { start=(start+alter-1)%i; if(start==0) start=i; count[k]=s[start]; k++; for(j=start+1;j<=i;j++) s[j-1]=s[j]; } count[k]=s[1]; return count;}
我自己写的约瑟夫环,求助
inputpassword漏了p=p->next;这样就相当于一直在给一个节点赋值还有while(p!=p->next){gostar(s,p);cout<position;s=p->password;t=p;p=p->next;\\\/\\\/你只是将指针指到此节点后面的节点,但是没将前面的节点连起来,这样就无法构成封闭环了free(t);}
约瑟夫问题C语言写一下.
#include#includevoid main(void){ int i,j=0,count=0,n,*a; printf(请输入n:); scanf(%d,&n); if((a=(int *)malloc(n*sizeof(int)))==NULL) { printf(错误); return; } for(i=0;i约瑟夫问题
\\\/\\\/这是用链表的方法。
#include #include struct LNode{ int data; LNode* next;};void CreateList(LNode**L,int n){ LNode *p,*q; *L=new LNode; (*L)->data=1; (*L)->next=*L; q=*L; for(int i=2;i<=n;i++) { p=new LNode; p->data=i; q->next=p; q=p; } q->next=*L;}void josephus(LNode *L,int m){ LNode *p,*q; p=L; q=NULL; int count=1; if (m<=1) { while(p->next!=L) { cout<data<<'\\\'; p=p->next; } cout<data<next!=p) { if(count==m-1) { q=p->next->next; cout<next->data<<'\\\'; delete p->next; p->next=q; count=0; } p=p->next; count++; } cout<data<<'\\\ '; }}void main(){ LNode *L=NULL; int m,n; cout<<输入m、n的值:<>m>>n; CreateList(&L,n); josephus(L,m);}\\\/\\\/这是用c#include #include struct LNode{ int data; LNode* next;};void CreateList(LNode**L,int n){ LNode *p,*q; *L=(LNode*)malloc(sizeof(LNode)); (*L)->data=1; (*L)->next=*L; q=*L; for(int i=2;i<=n;i++) { p=(LNode*)malloc(sizeof(LNode)); p->data=i; q->next=p; q=p; } q->next=*L;}void josephus(LNode *L,int m){ LNode *p,*q; p=L; q=NULL; int count=1; if (m<=1) { while(p->next!=L) { printf(%d\\\,p->data); p=p->next; } printf(%d\\\ ,p->data); } else { while(p->next!=p) { if(count==m-1) { q=p->next->next; printf(%d\\\,p->next->data); free(p->next); p->next=q; count=0; } p=p->next; count++; } printf(%d\\\ ,p->data);; }}void main(){ LNode *L=NULL; int m,n; printf(输入m、n的值:\\\ ); scanf(%d %d,&m,&n); CreateList(&L,n); josephus(L,m);}