華為機試 約瑟夫問題

2021-06-23 05:41:44 字數 1167 閱讀 6190

約瑟夫問題1

一組人(n個),圍成一圈,從某人開始數到第三個的人出列,再接著從下乙個人開始數,最終輸出最終出列的人

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

#include #include using namespace std;

struct listnode

};void array_iterate(int len, int k, int m, int output_array)

k=m;

while (temp!=prev)

output_array[index++]=temp->val;

m=k;

prev->link=temp->link;

delete temp;

temp=prev->link;

} output_array[index]=temp->val;

delete temp;

}int main()

,int len = 4, m=7

輸出:output_array =

#include #include using namespace std;

struct listnode

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

output_array[index++]=temp->val;

m=temp->val;

prev->link=temp->link;

delete temp;

temp=prev->link;

} output_array[index]=temp->val;

delete temp;

}int main()

int m;

cin>>m;

array_iterate(len,input_array,m,output_array);

for (int i=0;icout

return 0;

}

華為機試 約瑟夫環換m值

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

USTC機試 約瑟夫環的問題

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

華為機試整理

include stdafx.h includeusing namespace std int main int argc,tchar argv cout 2.大數相加 用stl的string比較方便,如下,自己測了幾組資料沒有什麼問題。include stdafx.h include includ...