1. 程式人生 > >華為上機筆試題之約瑟夫環

華為上機筆試題之約瑟夫環

/*
題目描述

有一個數組a[N]順序存放0~N-1,要求每隔兩個數刪掉一個數,到末尾時迴圈至開頭繼續進行,求最後一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,7},0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除),如此迴圈直到最後一個數被刪除。

輸入描述:

每組資料為一行一個整數n(小於等於1000),為陣列成員數,如果大於1000,則對a[999]進行計算。

輸出描述:

一行輸出最後一個被刪掉的數的原始下標位置。

輸入例子:

8

輸出例子:

6

*/


import java.util.LinkedList;  
import java.util.List;  
  import java.util.*;  
public class yuesefu {  
    public static void main(String[] args) {  
          Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();  
        List<Integer> all = new LinkedList<Integer>();  
        for(int i = 0;i <num;i++){  
            all.add(i);  
        }  
        System.out.println(all);  
     
        int i = 0;  
        int s =all.size();  
        //System.out.println(all[0]);  
        for(int n = 0;n < num-1 ;n++){  
       
            i = (i + 2) % all.size();  
  
            all.remove(i);  
        }  
   
  
        System.out.println("最後剩下的是編號為" + all.get(0) + " 的人");  
   
      
   
    }  
}  

相關推薦

上機試題

/* 題目描述 有一個數組a[N]順序存放0~N-1,要求每隔兩個數刪掉一個數,到末尾時迴圈至開頭繼續進行,求最後一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,

數據結構(一)線性表循鏈表

cli amp tlist isp alloc 個人 pla 初始 ont (一)前提 41個人報數,1-3,當誰報數為3,誰就去嗝屁。現在獲取他們嗝屁的順序 (二)實現結構 順序:3->1->5->2->4 (三)代碼實現 #def

迴圈佇列

此問題的要求為:n個人圍坐一圈,從第一個人開始數,每數到k,這個人就出列,圈中的下一個人重新從1開始計數,直到剩餘人數不足k人 下面我畫圖來加深理解(抱歉目前還不會用電腦繪製動畫,只好手動繪製,比較粗糙,之後有時間我改進下!!(看起來像個效果器上面的一堆旋鈕哈哈哈 下面附上完整

Java藍橋杯

import java.util.ArrayList; public class Test8 { /** * @param args * 約瑟夫環 * * 幸運數字 */ public static void main(String[]

順序表(josephus)

1.問題描述         n個犯人站成一個圈,從第s個人開始數起,每數到第d個犯人,就拉出來斬了,然後再從下一個開始數d個,數到的人再處決,………………,直到剩下最後一個犯人就予以赦免。 2.演

資料結構C語言實現

資料結構,是很重要的一門學科,每年考研,資料結構是各大院校必考的科目。當然,資料結構,最令人頭疼的就是演算法設計題了。為了幫助大家理解和掌握資料結構常見的演算法,學長推出系列文章,為大家分享這些重要演算法的C語言完成實現,大家有條件的話,可以在電腦上除錯執行,加深

資料結構

 約瑟夫斯問題(有時也稱為約瑟夫斯置換),是一個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。 有個囚犯站成一個圓圈,準備處決。首先從一個人開始,越過個人(因為第一個人已經被越過),並殺掉第k個人。接著,再越過個人,並殺掉第k個人。

資料結構線性表&&多項式求和&&差&&積&&導數&&給變數賦值小練習

問題描述 約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。通常

2017試題 公司年會

題目: 這個題目如果用遞迴的函式的話,主要就是要避免死迴圈 程式碼(沒地方提交,不知道對不對): #include <iostream> #include<algorithm

筆試題目--(Joseph)修改版

測試空間旗下大頭針出品 這個可是已經執行通過了的。大家可以看看,如果有什麼問題,及時交流。 #include<stdio.h>#include<stdlib.h>typedef struct Node *PNode; struct Node {       int num;     

數據結構問題(循鏈表)(C++版)

單鏈表 字母 exit 循環鏈表 urn list ext struct 插入 #include <iostream>#include <stdlib.h>using namespace std; typedef char ElemType;type

試題小記:1、統計字符串出現的次數,2、問題

lse UNC aaa ret nal 約瑟夫環問題 b2c else 用法 今天面到了一個比較有意思的筆試題,先記錄一下:1.字符串類似‘aaabbccddd’,寫個方法得出‘3a2b2c3d‘,即統計字符串出現的個數$arr = str_split(‘aaabbccdd

連結串列面試題----相關

約瑟夫環相關連結串列面試題 繼上篇部落格之------------ 什麼是約瑟夫環 約瑟夫環 判斷是否成環 求環的長度 環的入口點

二(用遞迴的思想解決Josephus問題)【轉】

初始情況: 0, 1, 2 ......n-2, n-1 (共n個人) 第一個人(編號一定是(m-1)%n,設之為(k-1) ,讀者可以分m<n和m>=n的情況分別試下,就可以得出結論) 出列之後, 剩下的n-1個人組成了一個新的約瑟夫環(以編

問題:有n個人排成一列或是一圈,從編號k的人開始報數,數到m的那個人出列。(Java實現)

文章目錄1.題目2.解析3.總程式碼 約瑟夫環問題 約瑟夫環描述:約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又

[CSP]201712-2 遊戲 暴力+(以此例)的遞推

愚蠢的看錯題了。中文讀題能力還不如英文,有待提升。 所以這道題用普通的陣列模擬操作就可以了。總之跟暴力模擬的約瑟夫環沒什麼區別。 可以用next陣列模擬指標做資料結構,但是資料範圍不大的情況下不建議這麼寫,維護一個指標環寫起來還是比較麻煩的。 #include <

C/C++面試算法系列--:每隔兩個迴圈刪除陣列元素,求最後刪除者的下標問題

對於只讀陣列,普通的標誌法都不能用了,將高位置1遍歷完後清除的方法借鑑意義最高;時間和空間效率最均衡;連結串列法可以處理只讀陣列的問題;迴圈佇列法此時無法實現;當然對於標誌法,可以額外申請空間儲存標誌,也可以處理只讀問題,但空間效率下來了 (adsbygoogle = window

二(用遞迴的思想解決Josephus問題)

初始情況: 0, 1, 2 ......n-2, n-1 (共n個人) 第一個人(編號一定是(m-1)%n,設之為(k-1) ,讀者可以分m<n和m>=n的情況分別試下,就可以得出結論) 出列之後, 剩下的n-1個人組成了一個新的約瑟夫環(以編號為k==m

PHP坑

<?php /* 約瑟夫環: 問題:一群猴子排成一圈,按1,2,…….,n依次編號。然後從第一隻開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,再把它踢出去………………….,如此不停的進行下去,直到最後只剩下一隻猴子為止,那隻猴子就叫做大王。要求:輸入

JS資料結構第三篇---雙向連結串列和迴圈連結串列問題

一、雙向連結串列 在上文《JS資料結構第二篇---連結串列》中描述的是單向連結串列。單向連結串列是指每個節點都存有指向下一個節點的地址,雙向連結串列則是在單向連結串列的基礎上,給每個節點增加一個指向上一個節點的地址。然後頭結點的上一個節點,和尾結點的下一個節點都指向null。同時LinkedList類中再增