bool bfs(command_seq *result_com) { int i; sq.init(); status ss, ss2; ss.cs.com_num = 0; for(i = 0; i < n; i++) { ss.st.top = 0; ss.st.value[i][0] = x[i]; } if(is_finished(ss.st)) { *result_com = ss.cs; return true; } sq.push(ss); while(!sq.empty()) { ss = sq.peek_front(); sq.pop(); for(i = 0; i < 5; i++) { ss2 = ss; if((*op_set[i])(&ss2.cs, &ss2.st)) { if(is_finished(ss2.st)) { *result_com = ss2.cs; return true; } if(ss2.cs.com_num < MAX_COM) sq.push(ss2); } } } return false; }