mobileliker 发表于 2013-1-26 12:33:09

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]
查看完整版本: grids 2746 约瑟夫问题