POJ 2746 约瑟夫问题 解题报告
编号:2746
考查点:模拟
思路:模拟题的思路就是把思路交给计算机解决,让计算机去计数,呵呵.
提交情况:还算顺利的一道题,大一高原让做过m=2时的约瑟夫环,有个公式可以不循环直接计算出来好像,大二涂风华又让写过约瑟夫环的循环队列实现.所以一次就AC了,oh yeah..
Source Code:
// POJ Grids 2766
#include < iostream >
using namespace std;
#define MAX 300
bool flag[MAX];
int main()
{
int m,n;
cin >> n >> m;
while (m || n)
{
memset(flag, 1 , 300 * sizeof ( bool ));
int count = 0 ;
int temp = 0 ;
int i = 0 ;
for (;count < n - 1 ;i ++ )
{
if (flag[i % n])
temp ++ ;
if (temp == m)
{
flag[i % n] = false ;
temp = 0 ;
count ++ ;
}
}
for (i = 0 ;i < n;i ++ )
{
if (flag[i])
{
cout << i + 1 << endl;
break ;
}
}
cin >> n >> m;
}
return 0 ;
}
总结:debug时又犯了外部数组初始化问题,下次记得要把初始化写在循环里!
By Ns517
Time 09.01.24