#include <cstdio>
#define maxn 1010
int n,m,a[maxn];
int go(int p,int d,int t){
while(t--){
do{p=(p+d+n-1)%n+1;}while(a[p]==0);
}
return p;
}
int main(){
while(scanf("%d%d",&n,&m)==2){
for(int i=1;i<=n;i++) a[i]=i;
int left=n,p=n;
while(left){
p=go(p,1,m);
printf("%d ",p);left--;
a[p]=0;
}
printf("\n\n");
}
return 0;
}
本文展示了一个使用C++实现的循环移除算法示例,该算法通过不断移动指针并检查特定条件来从数组中移除元素。具体地,算法会遍历数组并根据指定步长m移除元素,直到所有元素都被处理。
&spm=1001.2101.3001.5002&articleId=53173195&d=1&t=3&u=f40cdd5e6efe4433858577286b120f7f)
5559

被折叠的 条评论
为什么被折叠?



