zju/zoj 1136 Multiple(BFS)

来源:互联网 发布:c语言能找什么工作 编辑:程序博客网 时间:2024/05/16 17:51

就是不停的在后面加数。

#include<iostream>#include<cstring>#include<queue>#include<algorithm>#include<cstdio>#include<string>using namespace std;#define M 5002bool use[M];typedef struct li{string path;int num;}li;int main(){int n,m,s[M],p;li x,y;while(scanf("%d %d",&n,&m)!=EOF){for(int i=0;i<m;i++)scanf("%d",&s[i]);if(!n){printf("0\n");continue;}x.path="";x.num=0;sort(s,s+m);memset(use,false,sizeof(use));queue<li> q;q.push(x);while(!q.empty() && !use[0] ){x=q.front();q.pop();for(int j=0;j<m && !use[0];j++){y=x;y.num=y.num*10+s[j];if(!y.num) continue;p=y.num%n;if(use[p])continue;y.num=p;y.path+=(s[j]+'0');use[p]=true;q.push(y);}}cout<<(use[0]?y.path:"0")<<endl;}return 0;}


原创粉丝点击