1. 程式人生 > >n個人圍成一圈,從第1個人開始數數,數到3的人出圈,輸出最後剩餘的人編號(約瑟夫環問題)

n個人圍成一圈,從第1個人開始數數,數到3的人出圈,輸出最後剩餘的人編號(約瑟夫環問題)

#include <iostream>
#include<stdlib.h>
#define MAX 100
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    int arr[MAX]={0};
    for(int i=0;i<MAX;i++)
    {
        arr[i]=i+1;
    }
    int i=0,j=0,k=0;
    while(k<MAX-1)
    {
        if(arr[i]!=0)
        {
            j++;
        }

        if(j==2)
        {
            arr[i]=0;
            j=0;
            k++;
        }
        i++;
        if(i==MAX)
            i=0;

   }
    for(i=0;i<MAX;i++)
       if(arr[i])
           cout<<arr[i];
    return 0;
}

連結串列模型解決:

相關推薦

n個人,1個人開始,3,輸出最後剩餘編號問題

#include <iostream> #include<stdlib.h> #define MAX 100 using namespace std; int main() { cout << "Hello World!" << endl; i

poj 1012 Joseph求每次的序號

有k個好人和k個壞人,前k個是好人後k個是壞人。模擬約瑟夫環,每次數到m的數要被殺死,然後他後面的人從1開始報數。重複這個過程。要求輸出最小的m,使得前k個被殺死的人都是壞人。 因為k比較小,我

2.題目:有n個人,順序排號,第一個開始報數(13報數),凡報到3退出圈子,問最後最後留下的是原來幾號的那位. 提示:用陣列完成

#include <stdio.h> int main() { int n; printf(“輸入人數:\n”); scanf("%d",&n); int a[1000]; int i,temp; int count = 0; temp =

ACMNO.38 C語言-報數 有n,順序排號。1個人開始報數13報數,凡報到3退出圈子,問最後留下的是原來的幾號的那位。

題目描述 有n人圍成一圈,順序排號。 從第1個人開始報數(從1到3報數),凡報到3的人退出圈子。`在這裡插入程式碼片` 問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 來源/分類

設有n個人第一個人開始報數,m個人出列,然後出列的下個人開始報數...

Java程式設計實現:設有n個人圍成一圈,從第一個人開始報數,數到第m個人出列,然後從出列的下一個人開始報數,數到第m個人又出列,...,如此反覆到所有人出列為止。設n個人的編號為1到n,打印出出列的順序。package test; public class Test {

n個人,順序排號,第一個開始報數(1到m報數),凡報到m的退出圈子,問最後最後留下的是原來幾號的那位

//題目:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位. //提示:用陣列完成 #include <stdio.h> #define N 100 int fun (int n, int m

Java 寫有n個人,順序排號,第一個人開始報數1~3報數, 凡報到3退出圈子,問最後留下的原來排在幾號。

package tests; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 題目描述, *Java 寫有n個人圍成一圈,順序排號,從第一個人開始報數(從1~3報數), *凡報到3的

1098: C語言程式設計教程三版課後習題10.5---有n,順序排號。1個人開始報數13報數,凡報到3退出圈子,問最後留下的是原來的幾號的那位。

題目描述 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 提示 來源 思路點撥:定義一個數組,陣列下標表示人的編號,若數組裡面的

N個人,順序排號。第一個開始報數,(13報數),凡報道3退出圈子,問最後留下的是原來幾號那位

問題: 有n個人圍成一圈,按順序從1到n編好號。從第一個人開始報數,報到3的人退出圈子,下一個人從1開始報數,報到3的人退出圈子。如此下去,直到留下最後一個人。請按退出順序輸出退出圈子的人的編號

Java解決有n個人,順序排號。第一個人開始報數13報數,凡報到3退出圈子,問最後留下的是原來幾號的那位

練習題、有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。 import java.util.ArrayList; import java.util.List; import java.util.Scann

n個人第一個人開始123報數,報到3的離開,問最後剩下的幾個?

package com.xhly; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /**

【程式37】 題目:有n個人,順序排號。第一個人開始報數 13報數,凡報到3退出圈子,問最後留下的是 原來幾號的那位。

/* 2017年3月10日11:42:46 java基礎50道經典練習題 例37 Athor: ZJY && Purpose: 【程式37】 題目:有n個人圍成一圈,

C語言用陣列1. 簡單約瑟夫環問題: N個人編號從1~N圍成一圈,輸入個數T,從1開始報數,報到T的人出圈;下一人從1開始報數,下一個報到T的人出圈輸出出圈順序。 考慮問實現約瑟夫環問題

1. 簡單約瑟夫環問題: N個人,編號從1~N圍成一圈,輸入一個數T,從1號開始報數,報到T的人出圈;下一人又從1開始報數,下一個報到T的人出圈,輸出出圈順序。 考慮問題: 報到T的人出圈,怎麼表示出圈?要麼刪除對應的標號,其他的標號前移(如果是陣列結構,要依次移動

關於有N個人,第一個人1開始報數,報到M的出列,求最後一個出列的

一道面試題的java解法(其實就是一道演算法題): 有n個人圍成一圈,編號分別為1到n,第一個人從1開始報數,報到m的人出列,然後從下一個人重新從1開始報數,報到m的人出列,如果報數到了最後一個人,下個人就繼續從第一個人開始報數。求最後一個出列的人的編號? 也可以這樣說:

C語言程式設計:有n個人,順序排號。第一個人開始報數...

但是,看這些答案的程式,太麻煩的居多。做而論道針對這個問題,寫了一個程式,自我感覺是最簡短的。呵呵,歡迎網友拍磚。程式如下:==============================#include

m個人,每隔n個人出列,求出列的順序

#include<iostream.h> #include <string.h> #include <malloc.h> #include <stdio.h> #include <stdlib.h> typedef

助教c/c++:n個人報數問題

以下三個問題都屬於同類型的問題,其中兩道題目是助教時的實驗題,還有一道是華為在成都招聘時的機試題目。 在這三個問題中,問題1考慮的最簡單,用指標實現;問題2考慮最全面,用結構體實現;問題3用到了函式。 問題1:有n個人圍成一圈,順序排號。從第一個人開始報數,凡報到3的人退出

n 個人編號1-n3的出列,最後剩下的編號

問題: n 個人圍成一圈(編號1-n),數到3的出列,然後又從頭開始數,一直迴圈到最後一個人,請問最後剩下的人的編號? public int numberToExit(int total, int interval) { boolean[] arr = new bool