ZOj1136为何Segmentation Fault /*zoj1136 Multiple方法:广度优先搜索思路:先把 distinct decimal digits 进行从小到大排序然后先把这些数压入队列,如果这数是number的倍数,就跳出循环,结束.之后不断从队列
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 14:45:09
ZOj1136为何Segmentation Fault /*zoj1136 Multiple方法:广度优先搜索思路:先把 distinct decimal digits 进行从小到大排序然后先把这些数压入队列,如果这数是number的倍数,就跳出循环,结束.之后不断从队列
ZOj1136为何Segmentation Fault
/*
zoj1136 Multiple
方法:广度优先搜索
思路:先把 distinct decimal digits 进行从小到大排序
然后先把这些数压入队列,如果这数是number的倍数,就跳出循环,结束.
之后不断从队列中取出第一个数,在他后面分别加上这些digit,形成新的数值,
也就是数字长度加了一位.并不断压入队列中.为了节省时间,肯定要对树不断剪枝,
这里对每个将要压入队列的数值进行检查,如果它余number的余数以前已经出现过,
肯定就没有用,直接删掉它.直到找到第一个合适的数值.
*/
#include
#include
#include
#include
using namespace std;
int digit[11];//存入那M个digit数
int sign[5000];//余数使用标记
struct node
{
int value;
int remainder;//余数
}a,b;
queue que;
int main()
{
int number;
while(cin>>number)
{
int num;
int flag=0;
memset(digit,-1,sizeof(digit));
memset(sign,0,sizeof(sign));
cin>>num;
for(int i=0;i>digit[i];
}
if(number!=0)
{
while(!que.empty())que.pop();
sort(digit,digit+num);//对所有的digit数按大小排序
for(int i=0;i
ZOj1136为何Segmentation Fault /*zoj1136 Multiple方法:广度优先搜索思路:先把 distinct decimal digits 进行从小到大排序然后先把这些数压入队列,如果这数是number的倍数,就跳出循环,结束.之后不断从队列
伯虎博客已经有回答了 请去看