int main(){ printf("%s\n", "k=2"); for(int i=1; i<9; i++){ printf("%d\n", joseph(i, 2)); } printf("%s\n", "k=3"); printf("%d\n", joseph(15, 4)); return 0; }
int main(int argc,char *argv[]) { struct josepf *p1,*p2,*head,*tail; int num,firstpasswd; int i,id = 1; printf("请输入人数:"); scanf("%d",&num); printf("请输入初始密码:"); scanf("%d",&firstpasswd); p1 = (struct josepf *)malloc(LEN); head = p1; printf("请输入第1个人的密码:"); scanf("%s",p1->passwd); p1->id = 1; for(i = 1;i < num;i++) { p2 = (struct josepf *)malloc(LEN); printf("请输入第%d个人的密码:",i+1); scanf("%s",p2->passwd); p2->id = i+1; p1->next = p2; p1 = p2; } p1->next = head; tail = p1; joseph(head,tail,firstpasswd); return 0; }
long int joseph (long int n, long int k) { if (n==1) return 0; if (k == 1) return n-1; if (k>n){ puts("hello"); return (joseph(n-1,k)+k)%n;} long int cnt =n/k; puts("hello3"); long int res =joseph(n-cnt,k); res=res-(n%k); if (res <0){ res+=n;puts("hello3");} else res+=res/(k-1); return res; }
int main() { int n = 0; printf("Please input the Length of the Circle list: "); scanf("%d", &n ); int m = 0; printf("Please input the Stop point: "); scanf("%d", &m ); Linklist pList; init_list( &pList ); Create_List( &pList, n ); Print_List( &pList ); joseph( &pList, m ); return 0; }
int joseph(struct josepf *trans,struct josepf *tail,int passwd1) { char passwd[20]; int i; struct josepf *q,*p,*next,*s; if(passwd1 == 1) { s = trans->next; tail->next = s; strcpy(passwd,trans->passwd); printf("第%d个人出列(密码:%s)\n",trans->id,trans->passwd); free(trans); if(s->next != s) { joseph(s,tail,atoi(passwd)); } else printf("第%d个人出列(密码:%s)\n",s->id,s->passwd); } else { for(i = 1,p = trans;i != passwd1;i++,p = p->next) q = p; next = p->next; strcpy(passwd,p->passwd); q->next = next; printf("第%d个人出列(密码:%s)\n",p->id,p->passwd); free(p); if(next->next != next) { joseph(next,q,atoi(passwd)); } else printf("第%d个人出列(密码:%s)\n",next->id,next->passwd); } }
int main() { LinkNode *list = NULL; int i; int n, base; scanf("%d%d", &n, &base); list = creat_linknode(1); for(i = n; i > 1 ; i --) insert_linklist(list, i); show_linklist(list); list = joseph(list, base); show_linklist(list); free_linklist(list); return 0; }
int main() { long int n,m,res; while(1) { puts("hello"); scanf("%ld%ld",&n,&m); if(n==0 && m==0) break; puts("hello2"); res=joseph(n,m)+1; printf("%ld %ld %ld\n",n,m,res); } return 0; }
int main(int argc, char** argv) { /**** people (unrelated) ****/ Person adam("Adam", male); Person eve("Eve", female); Person joan("Joan", female); Person george("George", male); Person joseph("Joseph", male); Person hillary("Hillary", female); /***** 2nd generation *****/ // Adam and Eve are parents of Abel, Martha, Mary, and Bill Person *pAbel = eve.addChild(new Person("Abel", male)); adam.addChild(pAbel); Person *pMartha = eve.addChild(new Person("Martha", female)); adam.addChild(pMartha); Person *pMary = eve.addChild(new Person("Mary", female)); adam.addChild(pMary); Person *pBill = eve.addChild(new Person("Bill", male)); adam.addChild(pBill); /***** 3nd generation *****/ // Joan Abel are parents of Missy Person *pMissy = joan.addChild("Missy", female); pAbel->addChild(pMissy); // George and Martha are parents of Jacky and Patsy Person *pJacky = george.addChild("Jacky", female); pMartha->addChild(pJacky); Person *pPatsy = george.addChild("Patsy", female); pMartha->addChild(pPatsy); // Mary and Joseph are parents of James Person *pJames = pMary->addChild("James", male); joseph.addChild(pJames); // Bill and Hillary are parents of Chelsea Person *pChelsea = pBill->addChild("Chelsea", female); hillary.addChild(pChelsea); /***** Cousins *****/ pMissy->addCousin(pJacky); pMissy->addCousin(pPatsy); pMissy->addCousin(pJames); pMissy->addCousin(pChelsea); pJacky->addCousin(pMissy); pJacky->addCousin(pJames); pJacky->addCousin(pChelsea); pPatsy->addCousin(pMissy); pPatsy->addCousin(pJames); pPatsy->addCousin(pChelsea); pJames->addCousin(pMissy); pJames->addCousin(pJacky); pJames->addCousin(pPatsy); pJames->addCousin(pChelsea); pChelsea->addCousin(pMissy); pChelsea->addCousin(pJacky); pChelsea->addCousin(pPatsy); pChelsea->addCousin(pJames); // output all the people in the tree /* std::cout << "\nAll the people in the tree:\n\n"; std::cout << adam << eve; std::cout << *pAbel << joan << george << *pMartha << *pMary << joseph << *pBill << hillary; std::cout << *pMissy << *pJacky << *pPatsy << *pJames << *pChelsea << "\n"; */ std::cout << "\n\t******** Cousins ********\n"; // std::cout << "\n\t**** Parents and Cousins ****\n"; // pMissy->showParents(pMissy); pMissy->getCousins(pMissy); // pJacky->showParents(pJacky); pJacky->getCousins(pJacky); // pPatsy->showParents(pPatsy); pPatsy->getCousins(pPatsy); // pJames->showParents(pJames); pJames->getCousins(pJames); // pChelsea->showParents(pChelsea); pChelsea->getCousins(pChelsea); std::cout << "\n\n"; return 0; }
int joseph(int n, int k){ // O(klogn) if(n<=1)return 0; if(k==1)return n-1; // this line of code can be handled by caller int x=(n+k-1)/k; return (x*k+(joseph(n-x,k)*k+gm(x-n,k-1))/(k-1)+(x*k==n+k-1))%n; }
int main(int argc, char *argv[]) { printf("%d\n", joseph(5, 3)); return 0; }