1. 程式人生 > >有15個人圍成一圈,順序排號。從第一個人開始報數(從1~3報數),凡報到3的人退出圈子,問最後留下的人 C#版

有15個人圍成一圈,順序排號。從第一個人開始報數(從1~3報數),凡報到3的人退出圈子,問最後留下的人 C#版

今天下午,某一同學,問我一面試題,第一做法就是度娘了半天,發現都是c c++ 的   。遂參考邏輯、整理完一C# 版本的,留個小紀念

絕對正宗C#

namespace ConsoleApplication1
{
    class Program
    {

        static void Main(string[] args)
        {

            bool[] b = new bool[15];
            for (int i = 0; i < b.Length; i++)
            {
                b[i] = true;
            }
            Console.WriteLine("最後留下的是原來的第" + GetResult(b) + "號!");
            Console.ReadLine();
        }

        /// <summary>
        /// 得到最終結果
        /// </summary>
        /// <param name="arr"></param>
        /// <returns></returns>
        public static int GetResult(bool[] arr)
        {
            int _result = 0;//用來存放最終計算的結果
            int _arrCount = arr.Length;//布林陣列中為真的元素的數目
            int _item = 0;//數數的值

            #region 處理bool陣列,至到只剩下一個為true
            while (_arrCount > 1)//只到為真的數量等於1的時候跳出while迴圈
            {
                for (int i = 0; i < arr.Length; i++)
                {
                    if (arr[i])//若 某個(當前迴圈的)為true
                    {
                        _item++;//數+1, {數數字1、2、3} 
                        if (_item == 3)//當數到3時,從新開始數
                        {
                            _item = 0;
                            arr[i] = false;//設定數到3的等於false
                            _arrCount--;//為真的數量相應的減去一
                        }
                    }
                }
            }
            #endregion

            #region 遍歷所有的元素,並找出唯一為真的位置
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);//遍歷當前陣列
                if (arr[i])//其實只有一個為真了
                {
                    _result = i + 1;
                }
            }
            #endregion

            return _result;
        }

    }
}

相關推薦

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

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

15個人順序第一個人開始報數1~3報數報到3退出圈子最後留下 C#

今天下午,某一同學,問我一面試題,第一做法就是度娘了半天,發現都是c c++ 的   。遂參考邏輯、整理完一C# 版本的,留個小紀念 絕對正宗C# namespace ConsoleApplic

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

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

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

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 =

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

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

n 個人編號1-n數到3的出列最後剩下的的編號

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

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

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

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

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

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

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

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

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

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

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

n個人,1個人開始數數,數到3,輸出最後剩餘的編號約瑟夫環問題

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

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

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

【轉】N個人報數逢三出

//Author:Guo R.H//    USTC//N個人圍成一圈報數,逢三出圈#include<stdio.h>#include<string.h>#define N 10void main(){ int a[N],i,t=0,count=0; for(i=0;i<N;i+