【语言-C++】一圈猴子,数数淘汰,最后剩下谁?

来源:互联网 发布:人群密度算法源码 编辑:程序博客网 时间:2024/05/10 04:43
#include <iostream>using namespace std;int jp(int n,int s,int m)//n 表示一圈多少人,s表示从第几个开始数,m表示淘汰第几个{int ans;int *A=new int[n];for(int i=0;i<n;i++)A[i]=i+1;for(int k=n;k>1;k--)//n-1次出局后,就是结果{int choice=(s-1+m-1)%k;//出局人的数组元素下标s=choice+1;if(s==k)s=1;if(choice!=k-1){//cout<<A[choice]<<",";//依次删除for(int m=choice;m<k-1;m++)//出局人删除,依次向前移动一个位置A[m]=A[m+1];}}ans=A[0];delete []A;return ans;}int main(){cout<<jp(100,2,7)<<endl;return 0;}