約瑟夫問題:n個人圍成一圈,從第乙個人開始報數,數到m的人出圈;再由下乙個人開始報數,數到m的人出圈...,輸出一次出圈的人的編號。
#include using namespace std;
bool a[101];
int main(){
int n,m;
cin>>n>>m;
cout第t個位置有人的話,報數。
判斷報的數是否為m,若是m,則這個元素賦值1,即出圈,要從0開始報數。
直到人全部出圈,即出圈人數f=n。
這道題目需要搞清楚有多少變數,需要多少變數。人數和m,位置t,人數f,以及報的數值s。
當人在圈裡,報數+1,位置+1,直到報數等於題目要求的m,報數計0,位置繼續加1,這個位置改變量值為1...依次迴圈。當迴圈一圈即t=n+1,重新開始t=1。
#include using namespace std;
const int n=10;
int a[n+1];
int main(){
for(int i=1;i<=n;++i) cin>>a[i];
for(int i=1;i<=n-1;++i)
for(int j=1;j<=n-i;++j)
if(a[j]①用迴圈輸入陣列
②從a[1]到a[10],相鄰的數兩兩比較
③每次比較時,大的數在後面的話就交換。
④第一輪n-1次迴圈,把最小數排到最後,第二輪同樣把第二小排到右邊第二個,以此類推。
經典演算法 氣泡排序
題目從小到大排序陣列 原理 小的數放左邊,大的數放右邊。for 迴圈 的巢狀迴圈。外層迴圈控制排序的趟數 for int i 0 i arr.length 1 i 趟數為需要排序的字元多少,沒進行一趟,則排出乙個最大值。內層迴圈控制每一趟排序的次數 for int j 0 j arr.length ...
經典排序演算法,氣泡排序
氣泡排序是本人在大一學習c語言的時候就已經學過了,最近這段時間想起來把比較經典的排序演算法拿來回顧一下,鞏固一下知識。氣泡排序的核心就是比較相鄰兩個數的大小,然後將小的 或者大的 放到前面去,經過一趟之後,就能把最小或者最大的放到最前面,第二趟排序的時候,第乙個數不參與排序,從第二個數開始,經過一趟...
經典排序演算法 氣泡排序
對列表的無序部分從頭至尾掃瞄一遍,掃瞄過程中通過不斷交換相鄰兩個元素,最終把最大 小 元素交換到列表末尾。首先比較第一和第二個數,把較大的放在第二位。比較第二個和第三個數,再把較大的數放在第三位。如此比較下去,直到比較完最後兩個數。這樣就把整個列表中最大的數交換到了末尾。上面三步只是完成了對列表無序...