华为编程大赛 报数游戏 c++个人代码
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
报数游戏 问题描述: 设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报数到第M个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止。现要打印出出圈次序。 要求实现函数: 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