// Make subset list from the R1pn. // for example, (11,25, 39, 20) => {(11,25,39,20), (25,39,20), (39,20), (20)} private void MakeSubsetofR1pn(ref R1pnList rsubset, int indexofbaseR1pn, R1pn r1) { int count = r1.cp; R1pn r2 = new R1pn(r1.r1pn.Length); r2.CopyFrom(r1); for (int i = 0; i < count; i++) { if (!rsubset.IsExist(ref r2)) //check if rsubset already has the r2. { R1pn new1 = new R1pn(r1.r1pn.Length); new1.CopyFrom(r2); new1.indexofbaseR1pn = indexofbaseR1pn; rsubset.Add(new1); } r2.ShiftLeft_1(); if (r2.cp <= 0) { break; } } }