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

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
[C/C++ 演算法]- m 元素清單的 n 元素子清單 剛才找資料時發現一個C/C++的教學網站,趕快發揮(C/P)的長才將它備份來,有需要的同好,歡迎來(C/P)一下^^。 拷貝來源:http://openhome.cc/Gossip/AlgorithmGossip/http://openhome.cc/Gossip/AlgorithmGossip/NOfM.htm #include #include #define MAX 20 void init(int*, int); int position(int*, int, int); void next(int*, int, int); void print(int*, int); int main(void) { int list[MAX] = {0}; int m, n; printf("清單個數 m:"); scanf("%d", &m); printf("取出個數 n:"); scanf("%d", &n); init(list, n); print(list, n); while(hasNext(list, m, n)) { next(list, m, n); print(list, n); } return 0; } void init(int* list, int n) { int i; for(i = 0; i < n; i++) { list[i] = i + 1; } } int position(int* list, int m, int n) { if(list[n - 1] != m) { return n - 1; } else { int pos = n - 2; while(list[pos + 1] - list[pos] == 1) { pos--; } return pos; } } int hasNext(int* list, int m, int n) { return list[0] < m - n + 1; } void next(int* list, int m, int n) { int pos = position(list, m, n); list[pos]++; int i; for(i = pos + 1; i < n; i++) { list[i] = list[i - 1] + 1; } } void print(int* list, int n) { int i; for(i = 0; i < n; i++) { printf("%d ", list[i]); } putchar('\n'); }    

本文由jashliaoeuwordpress提供 原文連結

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