其他分享
首页 > 其他分享> > 1361:产生数(Produce)

1361:产生数(Produce)

作者:互联网

产生数

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 using namespace std;
 5 const int N=10005;
 6 int n,k,r[20][2],exist[N],ans=1;
 7 queue<int> q;
 8 void cnt(){
 9     while(!q.empty()){
10         int mod=1,x,y=q.front();
11         x=y;q.pop();
12         while(x){
13             int t=x%10;
14             x/=10;
15             for(int i=1;i<=k;i++)
16                 if(r[i][0]==t){//满足变换条件
17                     int p=y+(r[i][1]-t)*mod;//得到变换后的数
18                     if(!exist[p]){
19                         exist[p]=1;
20                         ans++;
21                         q.push(p);
22                     }
23                 }
24             mod*=10;
25         }
26     }
27 }
28 int main(){
29     cin>>n>>k;
30     for(int i=1;i<=k;i++)
31         scanf("%d%d",&r[i][0],&r[i][1]);
32     q.push(n);
33     exist[n]=1;
34     cnt();
35     cout<<ans;
36     return 0;
37 }

 

标签:10,10005,产生,pop,int,while,Produce,1361,include
来源: https://www.cnblogs.com/sxrekord/p/produce.html