标签:数到 出圈 int 中等 约瑟夫 数组 圈中 下标 难度
//约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;
//其他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围...
public class App5_3 {
public static void main(String[] args)
{
final int N=13,S=3,M=5; //从第3个人开始,顺序数到第5个人,则出圈,依次进行
int i=S-1,j,k=N,g=1;
int []a=new int[N];
for(int h=1;h<=N;h++)
a[h-1]=h; //把每个人的编号存入数组中,数组的下标从0开始
System.out.print("\n出圈的顺序为:");
do
{
i=i+(M-1); //i代表出圈人的下标
while(i>=k)
i=i-k; //当数组的下标大于等于圈中人数时,将数组的下标i减去圈中的人数k
System.out.print(" "+a[i]);
for(j=i;j<k-1;j++)
a[j]=a[j+1]; //a[i]出圈后,将后续人的编号前移
k--; //圈中的人数k减1
g++; //g为循环控制变量
}while(g<=N);
}
}
标签:数到,出圈,int,中等,约瑟夫,数组,圈中,下标,难度 来源: https://www.cnblogs.com/duanqibo/p/11131886.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。