grids 2746 约瑟夫问题
题意中文不解释
思路
这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为
(1)数数
(2)所数的数从列表中取出
(3)判断是否为1,是则输出,不是则继续
总结
暂无
代码
(I)方法一:使用数组+前移
http://dl.iteye.com/upload/attachment/579063/d7099618-fa83-3893-a717-c56a2eb4c35d.bmp
(1)C
http://dl.iteye.com/upload/attachment/579058/74c3d4e4-4977-312e-b078-8652f70134f6.png
#include "stdio.h"//#include "stdlib.h"#define max 300int a;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+1; i=0; while(n!=1) { i=(i+m-1)%n; for(j=i+1;j<n;j++){a=a;} n--; } printf("%d\n",a); } //system("pause"); return 0;}
(2)C++
http://dl.iteye.com/upload/attachment/579060/0a21f00c-1709-3b34-9526-0e0421283e59.png
#include "iostream"//#include "cstdlib"using namespace std;const int MAX = 300;int a;int main(){ int n,m; while((cin>>n>>m) && !(n==0 && m==0)) { int i; for(i=0;i<n;i++) a=i+1; i=0; while(n!=1) { i=(i+m-1)%n; for(int j=i+1;j<n;j++){a=a;} n--; } cout<<a<<endl; } //system("pause"); return 0;}
页:
[1]