zoukankan      html  css  js  c++  java
  • POJ1426 Find The Multiple

    一开始用queue超时了,可能是因为太慢了?

    queue方法:

    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<stack>
    using namespace std;
    void bfs(int n)
    {
        queue<long long>q;
        while(!q.empty())
        {
          q.pop(); 
        }
        q.push(1);
        while(!q.empty())
        {
            long long current =q.front();
            q.pop();
            if(current%n==0)
            {
                cout<<current<<endl;
                return;
            }
                
            q.push(current*10);
            q.push(current*10+1);
            
        }
     }
    int main()
    {
     int n;
     while(cin>>n)
     {
         if(n==0)
         break;
    
         bfs(n);
     }
     return 0;
    } 

    用数组模拟队列的方法:

    #include<iostream>
    using namespace std;
    long long que[9999999];
    void bfs(int n)
    {
        int head=1,tail=1;
        que[tail++]=1;
        while(head<tail)
        {
            long long now=que[head++];//每次往后一个,相当于Pop了。
            if(now%n==0)
            {
               cout<<now<<endl;
               return;
            }
            que[tail++]=now*10;
            que[tail++]=now*10+1;
        }
    }
    int main()
    {
        int n;
        while(scanf("%d",&n),n!=0)
        {
            bfs(n);
        }
        return 0;
    }
  • 相关阅读:
    SQL Server 2005存储过程示例
    SQL Server 存储过程
    SQL Server 2005存储过程示例
    转正申请书
    SQL注入天书
    转:毕业半年,我是如何从一名程序员成长为一名项目经理
    DIMFOM
    MONSA
    GLOBSYMM
    MASSHA
  • 原文地址:https://www.cnblogs.com/h694879357/p/13475493.html
Copyright © 2011-2022 走看看