grids 2746 约瑟夫问题题意中文不解释思路这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为
grids 2746 约瑟夫问题
题意
中文不解释
思路
这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为
(1)数数
(2)所数的数从列表中取出
(3)判断是否为1,是则输出,不是则继续
总结
暂无
代码
(I)方法一:使用数组+前移
(1)C
#include "stdio.h"//#include "stdlib.h"#define max 300int a[max+2];int main(){ int n,m; int i,j; while(scanf("%d%d",&n,&m) != EOF && !(n==0 && m==0)) { for(i=0;i<n;i++) a[i]=i+1; i=0; while(n!=1) { i=(i+m-1)%n; for(j=i+1;j<n;j++){a[j-1]=a[j];} n--; } printf("%d\n",a[0]); } //system("pause"); return 0;}(2)C++

#include "iostream"//#include "cstdlib"using namespace std;const int MAX = 300;int a[MAX+2];int main(){ int n,m; while((cin>>n>>m) && !(n==0 && m==0)) { int i; for(i=0;i<n;i++) a[i]=i+1; i=0; while(n!=1) { i=(i+m-1)%n; for(int j=i+1;j<n;j++){a[j-1]=a[j];} n--; } cout<<a[0]<<endl; } //system("pause"); return 0;} 