華為機試 約瑟夫環換m值

2021-06-25 19:51:01 字數 1046 閱讀 7444

問題描述: 輸入乙個由隨機數組成的數列(數列中每個數均是大於0的整數,長度已知),和初始計數值m。從數列首位置開始計數,計數到m後,將數列該位置數值替換計數值m,並將數列該位置數值出列,然後從下一位置從新開始計數,直到數列所有數值出列為止。如果計數到達數列尾段,則返回數列首位置繼續計數。請程式設計實現上述計數過程,同時輸出數值出列的順序

比如: 輸入的隨機數列為:3,1,2,4,初始計數值m=7,從數列首位置開始計數(數值3所在位置)

第一輪計數出列數字為2,計數值更新m=2,出列後數列為3,1,4,從數值4所在位置從新開始計數

第二輪計數出列數字為3,計數值更新m=3,出列後數列為1,4,從數值1所在位置開始計數

第三輪計數出列數字為1,計數值更新m=1,出列後數列為4,從數值4所在位置開始計數

最後一輪計數出列數字為4,計數過程完成。

輸出數值出列順序為:2,3,1,4。

• 要求實現函式: 

void array_iterate(int len, int input_array, int m, int output_array)

【輸入】 int len:輸入數列的長度;

int intput_array:輸入的初始數列

int m:初始計數值

【輸出】 int output_array:輸出的數值出列順序

【返回】 無

• 示例 

輸入:int input_array = ,int len = 4, m=7

輸出:output_array = 

#include using namespace std;

void shuchu(int arr,int len,int m)

; int p=0;

int i=0;

while(i>a;

while(getchar()!='\n')

arr[k++]=a;

cin>>m;

shuchu(arr,k,m);

return 0;

}

華為機試 約瑟夫問題

約瑟夫問題1 一組人 n個 圍成一圈,從某人開始數到第三個的人出列,再接著從下乙個人開始數,最終輸出最終出列的人 約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 ...

USTC機試 約瑟夫環的問題

唯一註解 此處不用推導出的公式。而是利用佇列的方法,直接將報號為指定數字前的資料壓入到佇列結尾,如此往復迴圈,則可以輸出正確結果 約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開...

機試真題 小朋友報數問題 約瑟夫環

沒啥難度,還是難以判斷測試用例的問題,也就是k是否大於10,否則就會採用字串進行判斷 include include include includeusing namespace std int n,k struct node queueque vectorvec bool charge int m...