求圍圈問題的詳細演算法

2021-04-08 22:28:40 字數 1255 閱讀 4112

我用三種不同的演算法來做的:

/*求圍圈問題的詳細演算法和程式*/

/*n人圍成一圈,編號為1,2,3,……,17,從1開始報數,報到m的倍數的人離開,

一直下去,直到最後剩下1人,求此人的編號  */

#include

#include

int main(void)

for (i = 0; i < n; i++)

i = 0;   //從下標為 i%n 的元素開始數數

j = 0;   //記錄已經退出的元素的個數

s = n;   //記錄尚未退出的元素的個數

while(s > 1)

}else   //如果元素值為0,則表示其已經退出

j++; //此時i值仍然會累加,但我們記下這個已經退出的元素 ,以便報數時跳過它  

i++;

}for(i=0; i

/*求圍圈問題的詳細演算法和程式*/

#include

#include

int main(void)

for (i = 0;i < n;i++)

printf("出列順序:/n");

j = s + m - 2;    /* 這是第乙個要出列的人的下標 */

while (n > 1)    /* 當佇列中還有不止乙個人的時候,要就進行出列的動作 */

n--;    /* 並且整個佇列的人少了乙個,也就是長度要減掉一 */

/* 這是下乙個要出列的人 */

j = (j + m - 1) % n;

}/* 現在只有乙個人了,就是arr[0] */

printf("最後乙個是:%d/n",arr[0]);

free(arr);    /* 記得要釋放申請的空間 */   

system("pause");

return 0;}

/*求圍圈問題的詳細演算法和程式*/

/*n人圍成一圈,編號為1,2,3,……,17,從1開始報數,報到m的倍數的人離開,

一直下去,直到最後剩下1人,求此人的編號  */

#include

#include

int main(void)

for (i = 0; i < n; i++)

i = 0;   

j = 0;   //報數

s = n;   //記錄尚未退出的元素的個數

while(s > 1)

} i++;

}for(i=0; i

求圍圈問題的詳細演算法

我用三種不同的演算法來做的 求圍圈問題的詳細演算法和程式 n人圍成一圈,編號為1,2,3,17,從1開始報數,報到m的倍數的人離開,一直下去,直到最後剩下1人,求此人的編號 include include int main void for i 0 i n i i 0 從下標為 i n 的元素開始數...

求圍圈問題的詳細演算法和程式

17人圍成一圈,編號為1,2,3,17,從1開始報數,報到3的倍數的人離開,一直下去,直到最後剩下1人,求此人的編號 include include int main void int i,count,s for i 0 i 17 i i 0 s 17 用來記錄退出圈外的人的數目 count 0 計...

Google PR值的詳細演算法

假設乙個由4個頁面組成的小團體 a,b,c 和 d。如果所有頁面都鏈向a,那麼a的pr pagerank 值將是b,c 及d的和。pr a pr b pr c pr d 繼續假設b也有鏈結到c,並且d也有鏈結到包括a的3個頁面。乙個頁面不能投票2次。所以b給每個頁面半票。以同樣的邏輯,d投出的票只有...