while ( !que.empty() ) { int cur = que.front(); que.pop();
if (cur == b) return ;
for (int i=0; i<4; i++) { //枚举四位数的所有操作 int x = cur; // 求第i位的值 x = x / w[i]; x = x % 10; // int num = cur - x * w[i]; //第i位为 0 的值 for (int j=0; j<=9; j++) { // 开始改变i i位, if (i == 0 && j == 0) // 最高位不能为0, 例如0891 continue; int sum = j * w[i] + num; // 枚举第i位后,的值 //可能重复枚举,vis去重 if (!vis[sum] && prime[sum]) { vis[sum] = 1; ans[sum] = ans[cur] + 1; que.push(sum); } } }