POJ 1426 Find The Multiple BFS

没什么好说的 从1开始进行广搜,因为只能包涵0和1,所以下一次需要搜索的值为next=now*10 和 next=now*10+1,每次判断一下就可以了,但是我一直不太明白我的代码为什么C++提交会错,G++则正确。

#include<cstdio>
#include<stdio.h>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 1005

using namespace std;

int n;

void BFS()
{
    queue<long long>Q;
    long long num;
    Q.push(1);

    while(!Q.empty())
    {
        num=Q.front();
        Q.pop();

        if(num%n==0)
        {
            printf("%lld\n",num);
            return;
        }
        Q.push(num*10);
        Q.push(num*10+1);
    }
}

int main()
{
    while(scanf("%d",&n),n)
    {
        BFS();
    }

    return 0;
}
View Code

 

posted @ 2016-07-16 15:26  声声醉如兰  阅读(117)  评论(0编辑  收藏  举报