这里<算法分析与设计>中的一种算法题目:书中用数组来解决
代码:
#include <iostream> using std::cout; void reap(int* Circle,int* result, int n) { int k = 3;//轮子 int s = n;//跟踪A数组的末尾 int j=0;//跟踪result数组末尾 while(j < n)//result数组如果填满,则出局顺序完成 { int t = s; //t总是指向A末尾 s = 0; for(int i = 0 ;i < t ;i++ ) { if(--k != 0) Circle[s++] = Circle[i]; else { result[j++] = Circle[i]; k=3; } } } } void main() { int result[10]={0}; int Circle[10]={1,2,3,4,5,6,7,8,9,10}; reap(Circle,result,10); for(int i=0;i<10;++i) cout<<result[i]<<' '; }