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

posted @ 2009-01-24 23:53  端木  阅读(1139)  评论(0编辑  收藏  举报