struct VarData
1 struct VarData { CRef reason; int level; };
在解析cnf时,S.nVars()使用
1 template<class B, class Solver> 2 static void readClause(B& in, Solver& S, vec<Lit>& lits) { 3 int parsed_lit, var; 4 lits.clear(); 5 for (;;){ 6 parsed_lit = parseInt(in); 7 if (parsed_lit == 0) break; 8 var = abs(parsed_lit)-1; 9 //如果var大于当前变量数 10 while (var >= S.nVars()) S.newVar(); 11 /** 12 * parsed_lit 正文字 1 2 3 负文字 -1 -2 -3 13 * var 绝对值-1 0 1 2 绝对值-1 0 1 2 14 * mkLit var+var+(int)sign 0 2 4 var+var+(int)sign 1 3 5 15 **/ 16 lits.push( (parsed_lit > 0) ? mkLit(var) : ~mkLit(var) ); 17 } 18 }
1 inline int Solver::nVars () const { return vardata.size(); }
1 vec<VarData> vardata; // Stores reason and level for each variable.
用来存储每个变量的原因和级别
初始化reason = CRef_Undef, level = 0;
浙公网安备 33010602011771号