約瑟夫環的簡單解析

2021-09-11 20:07:59 字數 977 閱讀 5887

本人也是初涉部落格,會盡量寫的清楚以便大家理解~

今天我們就來講解約瑟夫環問題

首先看看題目

約瑟夫問題-輸出最後的編號

description

n個人圍成一圈,依次從1至n編號。從編號為1的人開始1至k報數,凡報數為k的人退出圈子,輸出最後留下的乙個人原來的編號。

input

首先輸入乙個t,表示有t組資料(1<= t <= 10010)

然後有t行,每行有2個正整數n和k。(1<= n,k<= 20)

output

對於每組測試資料,輸出乙個數,表示最後留下來的人的編號。

sample input

310 3

7 15 4

sample output47

1這道題可能對很多初涉c語言的同學們來說,都不是很容易上手,網上**也很多比較繁瑣。現在我就用一種比較簡單的方法和大家講解。

思路:我們可以將其視為乙個圓,每乙個位置有它對應的編號。那如果我們能使該編號自動指向下乙個編號,不就能夠使其一直迴圈下去了嗎?

**+解析:

#include

intmain()

p++;if

(p==n)

break

;//一旦踢出了n個數,立即停止,記錄j,而a[j]就是最終答案

k=1;a[j]

=a[a[j]];

//如果數到了m,則下一次要跳過j+1這個數,就是k,所以這裡a[j]不再指向j+1,而是a[a[j]],也就是j+2;跳過該項(原本a[j]是指向j+1的)

}printf

("%d\n"

,a[j]);

//輸出a[j];}}

return0;

}

約瑟夫環 C語言解析

約瑟夫環 在我們c語言的初學基礎中,會遇到魔方陣,做遊戲踢出 佇列。都要用到迴圈陣列。魔方陣之前有講解,今天只說做遊戲踢出佇列。這類問題有很多說法。現在我們說做遊戲退出 有n個人,在一起做遊戲,由第乙個人從1開始數,數到m,第m個人退出。接著m的下乙個人從1開始數,數到m,第m個人退出。如果說數了第...

約瑟夫環的陣列解法(非常簡單)

關於約瑟夫環的陣列解法。通過分析實現 如下 include stdio.h 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。int main for...

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...