POJ 1426 字符串来处理大数求解该题

来源:互联网 发布:linux corosync 编辑:程序博客网 时间:2024/06/11 02:24
#include <iostream>#include <cstring>typedef long long ll;using namespace std;const int maxn = 200;string s[maxn];int m[maxn],p,q,n;bool vis[205];void bfs(){    p = q = 0;    memset(vis,0,sizeof(vis));    s[q] = "1";    m[q++] = 1;    vis[1] = true;    while(p!=q){        s[q] = s[p] + "0";        m[q] = m[p]*10%n;        if(m[q]==0){            cout<<s[q]<<endl;            return ;        }        if( !vis[m[q]] ){            vis[m[q]] = true;            q++;        }        s[q] = s[p] + "1";        m[q] = (m[p]*10+1)%n;        if(m[q]==0){            cout<<s[q]<<endl;            return ;        }        if( !vis[m[q]] ){            vis[m[q]] = true;            q++;        }        p++;    }}int main(){    while(cin>>n,n){        bfs();    }    return 0;}该解法对于BFS当中的队列的应用 未采用STL,而是采用数组下标进行操作,值得学习。
0 0
原创粉丝点击