OI養老專題01:約瑟夫問題
有M個人,其編號分別為1-M。這M個人按順序排成一個圈。現在給定一個數N,從第一個人開始依次報數,數到N的人出列,然後又從下一個人開始又從1開始依次報數,數到N的人又出列...如此循環,直到最後一個人出列為止。
輸入只有一行,包括2個整數M(8 <= M <= 15 ),N( 5 <= N <= 32767 )。之間用一個空格分開。
輸出M行,每行一個整數,表示每次出列的人的編號。
好養老的一道經典題啊......為什麽不回憶一下剛學OI時的愚鈍,暴力模擬一下呢?反正剛學OI時也是這麽做的......
一開始想用指針,但是發現敲不來(菜);然後改用鄰接表,發現也敲不來......反正這麽菜,幹脆打vis數組好了,遇到vis[i]=1就跳過:
for(int i=1,cnt=1,res=m;res>=1;i=i%n+1) if(!vis[i]){ if(!cnt) printf("%d\n",i),vis[i]=true,res--; cnt=(cnt+1)%n; }
是不是很養老~反正這個數據範圍的題是水得過去的。
OI養老專題01:約瑟夫問題
相關推薦
OI養老專題01:約瑟夫問題
過去 through 一個空格 之間 bsp 依次 下一個 res 循環 有M個人,其編號分別為1-M。這M個人按順序排成一個圈。現在給定一個數N,從第一個人開始依次報數,數到N的人出列,然後又從下一個人開始又從1開始依次報數,數到N的人又出列...如此循環,直到最後一
OI養老專題03:讓壞人出列的約瑟夫問題
col 個人 ati 過去 n+1 pre 輸出 clu 壞人 問題是這樣的:一共有2n個人,其中有n個好人,n個壞人。好人的編號是1~n,壞人的編號是n+1~2n。要求你求出最小的m(報數到m的人出局),讓前n個出局的人都是壞人。 似乎除了暴力,我們想不出其
資料結構:約瑟夫環
約瑟夫環 問題描述: 約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下
poj1012:約瑟夫問題
import java.util.Scanner; public class Main { static int[] Result = new int[13]; public static void main(String[] args) { Scanner in = new Sc
小朋友學資料結構(1):約瑟夫環的連結串列解法、陣列解法和數學公式解法
約瑟夫環(Josephus)問題是由古羅馬的史學家約瑟夫(Josephus)提出的,他參加並記錄了公元66—70年猶太人反抗羅馬的起義。約瑟夫作為一個將軍,設法守住了裘達伯特城達47天之久,在城市淪陷之後,他和40名死硬的將士在附近的一個洞穴中避難。在那裡,這些
PHP坑之:約瑟夫環
<?php /* 約瑟夫環: 問題:一群猴子排成一圈,按1,2,…….,n依次編號。然後從第一隻開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,再把它踢出去………………….,如此不停的進行下去,直到最後只剩下一隻猴子為止,那隻猴子就叫做大王。要求:輸入
迴圈連結串列:約瑟夫問題(非常詳細易理解)
約瑟夫問題來源 據說著名猶太曆史學家 Josephus有過以下的故事:在羅馬人佔領喬塔帕特後,39個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了一個自殺方式,41個人排成一個圓圈,由第1個人開始報數,每報數到第3人該人就
C++:順序表類實現約瑟夫問題_密碼不同
class josephus main clu 定義 void seq esp while //.h #pragma once#include <iostream>using namespace std;#define MAXSIZE 100 template
面試題小記:1、統計字符串出現的次數,2、約瑟夫環問題
lse UNC aaa ret nal 約瑟夫環問題 b2c else 用法 今天面到了一個比較有意思的筆試題,先記錄一下:1.字符串類似‘aaabbccddd’,寫個方法得出‘3a2b2c3d‘,即統計字符串出現的個數$arr = str_split(‘aaabbccdd
程式設計16:環形單鏈表的約瑟夫問題
<?php header("content-type:text/html;charset=utf-8"); /* *單鏈表的約瑟夫問題 P43 */ class Node{ public $value; public $next; public function __c
兩個經典遞迴問題:算瓶蓋與約瑟夫環
但凡遞迴,大部分都是兩句話能搞定的,先確定遞迴停止條件,向外翻轉,再確定迴圈條件,向內遞進 if(xx) return xx; return def(xx...); 首先是算瓶蓋,一百元買啤酒,五元一瓶,三個換一瓶,兩個瓶身換一瓶,求最後總數: 首先,確定條件:
約瑟夫環問題(二):(難度:2顆星)
問題描述: 編號為1,2,…,n的n個人按順時針方向圍坐一圈,任選一個正整數作為報數上限m,從第一個人開始按順時針方向從自1開始順序報數,報道m時停止報數.報m的人出列,從他的順時針方向上的下一個人開始重新從1報數,如此下去,直至所有人全部出列為止,輸出最後一個出列的人的編號。 輸入
約瑟夫環問題(一)(難度:1顆星)
問題描述: 編號為1,2,…,n的n個人按順時針方向圍坐一圈,任選一個正整數作為報數上限m,從第一個人開始按順時針方向從自1開始順序報數,報道m時停止報數.報m的人出列,從他的順時針方向上的下一個人開始重新從1報數,如此下去,直至所有人全部出列為止,設計一個程式求出出列順序. 輸入輸
約瑟夫問題:古代某法官要判決n個犯人死刑...
古代某法官要判決n個犯人死刑,他有一條荒唐的邏輯,將犯人首尾的相接排成圓圈,然後從第s個人開始數起,每數到第m個犯人,就拉出來處決;然後又數m個,數到的犯人又拉出來處決,依次類推。剩下的最後一人可以豁免。 int main(int argc, char **argv)
約瑟夫環問題:有n個人排成一列或是一圈,從編號為k的人開始報數,數到m的那個人出列。(Java實現)
文章目錄1.題目2.解析3.總程式碼 約瑟夫環問題 約瑟夫環描述:約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又
C語言用陣列1. 簡單約瑟夫環問題: N個人,編號從1~N圍成一圈,輸入一個數T,從1號開始報數,報到T的人出圈;下一人又從1開始報數,下一個報到T的人出圈,輸出出圈順序。 考慮問實現約瑟夫環問題
1. 簡單約瑟夫環問題: N個人,編號從1~N圍成一圈,輸入一個數T,從1號開始報數,報到T的人出圈;下一人又從1開始報數,下一個報到T的人出圈,輸出出圈順序。 考慮問題: 報到T的人出圈,怎麼表示出圈?要麼刪除對應的標號,其他的標號前移(如果是陣列結構,要依次移動
約瑟夫問題及變形:poj 1012
約瑟夫問題是個有名的問題:N個人圍成一圈,從第一個開始報數,第M個將被殺掉,最後剩下一個,其餘人都將被殺掉。例如N=6,M=5,被殺掉的順序是:5,4,6,2,3,1。 給定N個人和m,計算最後獲救者的編號,求解的思路是一種遞推思
迴圈連結串列示例:求解約瑟夫問題(C++實現)
約瑟夫問題描述: 一個旅行社要從n個旅客中選出一名旅客,為他提供免費的環球旅行服務。旅行社安排這些旅客圍成一個圓圈,從帽子中取出一張紙條,用上面寫的正整數m(<n)作為報數值。遊戲進行時,從
【LeetCode & 劍指offer刷題】發散思維題3:62 圓圈中最後剩下的數字(約瑟夫環問題)
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 62 圓圈中最後剩下的數字(約瑟夫環問題) 題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老
C/C++面試之算法系列--約瑟夫環:每隔兩個迴圈刪除陣列元素,求最後刪除者的下標問題
對於只讀陣列,普通的標誌法都不能用了,將高位置1遍歷完後清除的方法借鑑意義最高;時間和空間效率最均衡;連結串列法可以處理只讀陣列的問題;迴圈佇列法此時無法實現;當然對於標誌法,可以額外申請空間儲存標誌,也可以處理只讀問題,但空間效率下來了 (adsbygoogle = window