出圈问题(自己的程序)

    技术2022-08-10  45

    #include "iostream" using namespace std; #define MAX 10 #define DIST 5 void initArray(int person[], int nLen); void Out(int person[], int nMax, int nDist); void reversePrint(int person[], int nLen); void main() { int nLen = MAX; int dist = DIST; int person[MAX]; initArray(person, nLen); Out(person, nLen, dist); reversePrint(person, nLen); system("pause"); return; } void initArray(int *person, int nLen) { int i = 0; for (i =0; i < nLen; i++) { person[i] = i+1; } } void reversePrint(int *person, int nLen) { int i = 0; for (i =nLen -1; i >=0; i--) { cout << person[i] << '/t'; } } //出圈的主要函数 void Out(int *person, int nMax, int nDist) { int nCount = 1; int nStart = 0; while (nMax > 1) { if (nCount == nDist) { nCount = 1; int idx = 0; int nTmp = person[nStart]; for (idx = nStart; idx < nMax - 1; idx++) { person[idx] = person[idx + 1]; } person[nMax - 1] = nTmp; nMax--; } else { nCount++; nStart = (nStart + 1) % nMax; } } }

    最新回复(0)