1996 约瑟夫问题
难度:普及-
题目类型:模拟
提交次数:1
涉及知识:模拟
题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
代码:
#include<iostream> using namespace std; int main(){ int n, m, i; cin>>n>>m; int a[n+1]; for(i = 1; i < n; i++) a[i] = i+1; a[n] = 1; i = 1; int j = n; int out = 0; while(out!=n){ while(i<m){ j = a[j]; i++; } cout<<a[j]<<" "; out++; a[j] = a[a[j]]; i = 1; } return 0; }
备注:
链表,过程想清楚