grids 2746 约瑟夫问题_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > grids 2746 约瑟夫问题

grids 2746 约瑟夫问题

 2011/10/31 8:28:57  mobileliker  http://mobileliker.iteye.com  我要评论(0)
  • 摘要:题意中文不解释思路这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为(1)数数(2)所数的数从列表中取出(3)判断是否为1,是则输出,不是则继续总结暂无代码(I)方法一:使用数组+前移(1)C#include"stdio.h"//#include"stdlib.h"#definemax300inta[max+2];intmain(){intn,m;inti,j;while(scanf("%d%d",&n,&m)!=EOF&&!(n==0&
  • 标签:问题
  • 题意

  • 中文不解释
  • 思路

  • 这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为

    (1)数数
    (2)所数的数从列表中取出
    (3)判断是否为1,是则输出,不是则继续
  • 总结

  • 暂无
  • 代码

  • (I)方法一:使用数组+前移






    (1)C




    #include "stdio.h"
    //#include "stdlib.h"
    #define max 300
    int 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;
    }
    
    
    
    • 大小: 3.4 KB
    • 大小: 3.2 KB
    • 大小: 9.6 KB
    • 查看图片附件
    发表评论
    用户名: 匿名