本帖最后由 编程学徙 于 2014-5-9 03:34 编辑
[ 本帖最后由 编程学徙 于 2014-5-9 03:33 编辑 ]\n\n废话少说,先上代码……
- /**
- *此程序解决的问题:M个人围成一圈,从1报到N,数到N的人退出,最后剩下Y个人的是原来的多少多少号?
- *思路:用利用数组的灵活性来解决这个问题。
- *步骤:
- *1、先创建一个由M个元素组成的数组;
- *2、把下标为m的数赋值为m+1,相当于给每人一个编号;
- *3、设置一个变量i;
- *4、让数组下标的值从0递增到M-1,然后返回0,再递增,循环不止;
- *5、i的值随m的递增而递增(如果下标为m的元素其值为0,则不递增),如果i%N==0,则把元素赋值为0(相当于这个编号的人退出圈子);
- *6、用变量n统计剩下人的个数,直到n==Y,循环终止;
- *7、遍历数组,输出其中不为0的数,既为剩下的人的编号。
- */
- class Bao_Shu
- {
- public static void main(String[] args)
- {
- final int M = 100;
- final int N = 14;
- final int Y = 3;
- int m,n = M;
- int i = 0;
- int array[] = new int[M];
- for(m=0;m<M;m++)
- {
- array[m] = m+1; //为成员编号;
- }
- for(m=0;;m++)
- {
- if(m==M)
- {
- m = 0;
- }
- if(array[m]!=0)
- {
- i++;
- if(i%N==0)
- {
- array[m] = 0;
- n--; //n用于统计剩下的人的个数,每退出一个人,n的值减1;
- if(n==Y)
- {
- break;
- }
- }
- }
- }
- System.out.println("剩下的是");
-
- for(int s :array)
- {
-
- if(s!=0)
- {
-
- System.out.println(s+"号."); //输出剩下的人的编号;
- }
- }
-
- }
- }
复制代码
运行结果:
新手不容易,想进黑马却没有技术分的新手更不容易……路过的前辈,给点儿技术分呗……谢谢。。
|
|