【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《华为编程大赛 报数游戏 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.wddqxz.cn/6446224de45c3b3567ec8b34.html