POJ 2746 约瑟夫问题 解题报告
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