约瑟夫问题

    xiaoxiao2021-04-15  28

    题目背景

    约瑟夫是一个无聊的人!!!

    题目描述

    n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.

    输入输出格式

    输入格式:

     

    n m

     

    输出格式:

     

    出圈的编号

     

    输入输出样例

    输入样例#1: 10 3 输出样例#1: 3 6 9 2 7 1 8 5 10 4

    思路:

    此题的重点在于将数字连成一个环,并判处被排除的数字,是一个纯搜索的过程。

    #include<iostream> using namespace std; int a[10000],m,n; int main() { cin>>n>>m; int t=0,s=0,f=0; do{ s++; if(s==n+1)s=1; if(a[s]==0) t++; if(t==m){ t=0; a[s]=1; cout<<s<<' '; f++; } }while(f!=n); return 0; }

     

    转载请注明原文地址: https://ju.6miu.com/read-671666.html

    最新回复(0)