本文目录
java递归约瑟夫环
如果你需要依次输出每次的N,只需要在递归的内部添加输出语句即可,即在每个return n;的前面添加System.out.println("n:"+n);
用数组方法解决约瑟夫问题
不好意思,开始没看清题,以为编号是0到12,修改后如下:#include《stdio.h》 /*有13个人围成一圈(编号为1~13),从第1号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后剩下一个人为止,问此人原来的位置是多少号?*/ main() { int a; int i,c,count=0; for(i=1;i《14;i++) { a=i; } i=1; c=0; a=EOF;while(c《12) { if(a!=EOF) { count=count+1; if(count==3) { a=EOF; c++; count=0; } } i=(i+1)%14; } for(i=1;i《14;i++) { if(a!=EOF) { printf("the last one is:%d\n",a); } } getch(); }
C语言小程序 约瑟夫环问题,使用递归算法,逐个输出被淘汰的人,最后输出幸存者;还有选择排序问题
//如果C语言的话,改下输入输出import java.util.*;public class Main {public static void main(String args) { Scanner a=new Scanner(System.in);int n=a.nextInt();int m=a. nextInt();int bianhao=0; int s=0;if(m》0&&m《=300&&n》0&&n《=300){ for(int i=2;i《=n;i++)bianhao=(bianhao+m)%i;} s=bianhao+1;System.out.print("最后赢得编号是:"+s);}}