N個人圍成一個圈子,從1開始報數,報到m的人出列,以此類推,求出列順序

使用數組的實現:

class TestDemo {
	@Test
	void test() {
		TestDemo t=new TestDemo();
		System.out.println(t.getDemo(5,3));
	}
	
	public List<Integer> getDemo(int number,int step){
		List<Integer> li=new ArrayList<Integer>();
		if(number<0)
			return li;
		if(number==1) {
			li.add(1);
			return li;
		}else {
			int[] arry=new int[number];
			for(int i=0;i<number;i++) {
				arry[i]=i+1;
			}
			int count=0;//總的數
			int index=0;//記錄腳標的位置
			while (count<number) {
				int tmpeStep=0;
				while(true) {
					if(index==number) 
						index=0;
					if(arry[index]!=0) {
						tmpeStep++;
					}
					if(tmpeStep==step) {
						break;
					}
					index++;	
				}
				count++;
				li.add(arry[index]);
				arry[index]=0;
				index++;
			}
		}
		return li;
	}
}

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章