怎么解决360导航的网站建设,网站建设it职位,贵德网站建设,百度怎么推广今天来讲一道饶有名气的题目#xff0c;约瑟夫问题 约瑟夫问题 这道题目有许多大佬用队列、递归、链表来解这道题目而这题的难度也确实非同小可#xff01; 可是你们难道没有想过#xff1f;用数组去解决吗#xff1f;没错一维数组#xff01;为了想出解决办法我掉了23根头…今天来讲一道饶有名气的题目约瑟夫问题 约瑟夫问题 这道题目有许多大佬用队列、递归、链表来解这道题目而这题的难度也确实非同小可 可是你们难道没有想过用数组去解决吗没错一维数组为了想出解决办法我掉了23根头发。真的不管你们信不信。。。。
还是一样先画图分析。
1.数组模拟环状数组类型 可以发现我们可以用数组来模拟这样一个环状当tn1的时候也就是说已经循环一圈完了。那此时的程序估计也快结束了当然这时不可能的。 既然如此我们不妨把数组类型定义成bool类型false是没出圈而true是已经出圈的人。然后循环判断即可。 2.人数减少细枝末节
其实人数减少就是把已经出圈的人定为true就是把对应的数组下标定为true。每次出圈的话将f递增即可最后
题目代码 #includecstdio
int n,m,s,f,t;
bool a[1002];
int main(){scanf(%d %d,n,m);for(int i1;i1002;i){a[i]false;}do{t;if(tn1){t1;}if(a[t]false){s;}if(sm){s0;printf(%d ,t);a[t]true;f;}}while(f!n);return 0;
} 不去试试