JAVA写约瑟夫环,输入有一个数据有错

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:57:31
public class test
{
public static void main(String[] args)
{
int[]x=new int[13];
int n=13,s=3,m=5,i,j,k;
for(i=1;i<=13;i++)x[i-1]=i;
for(i=13;i>1;i--)
{
s=(s+m-1)%i;
if(s==0) s=i;
k=x[s-1];
for(j=s;j<i;j++)
{
x[j-1]=x[j];
x[i-1]=k;

}
}
for(i=12;i>=0;i--)
System.out.print(x[i]+" ");
}
}

输出结果是:7 12 4 10 3 11 6 2 1 5 9 5(这个5应该是13) 8
其它都是正确的
请问各位高手哪里出了错

应该是
public class test
{
public static void main(String[] args)
{
int[]x=new int[13];
int n=13,s=3,m=5,i,j,k;
for(i=1;i<=13;i++)x[i-1]=i;
for(i=13;i>1;i--)
{
s=(s+m-1)%i;
if(s==0) s=i;
k=x[s-1];
for(j=s;j<i;j++)
{
x[j-1]=x[j];
}
x[i-1]=k;
}
for(i=12;i>=0;i--)
System.out.print(x[i]+" ");
}
}
你的语句“x[i-1]=k;”写错地方了。下次记得写注释哦