华为编程大赛 报数游戏 c++个人代码

时间:2022-05-19 14:12:13 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
报数游戏

问题描述:

设有N个人围坐一圈并按顺时针方向从1N编号,从第S个人开始进行1M报数,报数到第M个人时,此人出圈,再从他的下一个人重新开1M的报数,如此进行下去直到所有的人都出圈为止。现要打印出出圈次序。 要求实现函数:

void circle_sort (int n, int s, int m, int *p) 输入:n 游戏总人数 s 报数的起始编号 m 报数的数值 输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中 示例

n=7 s=2 m=3 出圈次序为:4 7 3 1 6 2 5 n=3 s=1 m=2 出圈次序为:2 1 3



#include #include using namespace std;

void CircleSort(int n, int s, int m, int *p);

int main() {

CircleSort(n, s, m, p); int n=7; int s=2; int m=3;

int* p = new int[n];


}

for(int i=0; i

cout << setw(3) << p[i]; cout << endl; delete p; return 0;

void CircleSort(int n, int s, int m, int* p) { }

delete a;

int* a = new int[n];int b; for(int i=0; i { }

if((s+m-1 == n-i) ||(s+m-1)%(n-i)==0 )

s = n-i;

s = (s+m-1)%(n-i); else

p[i] = a[s-1];

for(int j=s-1; j

a[j]=a[j+1]; a[i]=i+1;

for(int i=0; i




本文来源:https://www.wddqw.com/doc/6446224de45c3b3567ec8b34.html