第一次写博客,希望提高编程水平,如果您可以看到这篇文章希有对写博客一些注意事项和心得建议本人非常愿意接受。
该题本质为约瑟夫环,
输入两个正整数 n 和 m( (1
常用的有三种解法1-数组、2-循环列表、3-递归。
一种解法:用数组来对约瑟夫环求解。
思路:定义一个数组,给其开辟空间,然后将编号放进数组中,即对数组初始化,遇到第k个则把第k个删除,将之后的元素向前移位。具体程序如下:
void Ysf_Cirle(int *space, int m, int k){
for(int i=0; i
space[i] = i+1;int pos = 0;
while(m > 1) {
for(int j=0; j
pos = (pos+1) % m; //在此处求模,这样就可以达到循环的目的。
cout<
for(int n=pos; n
space[n] = space[n+1];
m--; }
cout<
}
int main(){
int *space;
int m, k;
cout<";
cin>>m;
cout<";
cin>>k;
space = (int*)malloc(sizeof(int)*m);
Ysf_Cirle(space, m, k);
fre