须要注意的是,进行模运算剪枝……
#include<iostream> #include<queue> #include<cstdlib> #include<cstring> using namespace std; int N,M,K,T,X; bool used[1010]; struct node { int value,step; char prc[10000]; }st; int remind(int a,int b) { return (a%b+b)%b; } void init() { T=remind(N+1,K); st.value=N; X=M*K; st.step=0; memset(used,0,sizeof(used)); used[st.value]=1; } void bfs() { int i,tmp,tmp1; queue<node>qq; node t1,t2; qq.push(st); while(qq.size()) { t1=qq.front(); qq.pop(); if(remind(t1.value,K)==T) { t1.prc[t1.step]='