3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
[C/C++ 演算法]- 約瑟夫問題(Josephus Problem) 剛才找資料時發現一個C/C++的教學網站,趕快發揮(C/P)的長才將它備份來,有需要的同好,歡迎來(C/P)一下^^。 拷貝來源:http://openhome.cc/Gossip/AlgorithmGossip/http://openhome.cc/Gossip/AlgorithmGossip/JosephusProblem.htm #include #include #define LEN 41 #define STEP 3 void josephus(int*, int, int); int next(int*, int, int, int); int winner(int, int); int main(void) { int man[LEN] = {0}; josephus(man, LEN, STEP); printf("約琴夫排列:"); int i; for(i = 0; i < LEN; i++) { printf("%d ", man[i]); } printf("\nWinner: %d", winner(LEN, STEP)); return 0; } void josephus(int* man, int len, int k) { int i, n; for(i = 1, n = -1; i <= len; i++) { n = next(man, len, k, n); man[n] = i; } } int next(int* man, int len, int k, int n) { int count = 0; while(count < k) { n = (n + 1) % len; if(man[n] == 0) { count++; } } return n; } int winner(int len, int k) { int g, n; for(g = 0, n = 1; n <= len; n++) { g = (g + k) % n; } return g + 1; }

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦