Пример #1
0
        public static int Letters2Rec(string S, Seq seq)
        {
            var reader = new SeqReader(S);

            // Seq seq = reader.ReadNext();
            if (seq == null)
            {
                return(0);
            }
            Seq nextSeq = reader.ReadNext();

            if (nextSeq == null)
            {
                return(0);
            }

            Seq opt1 = seq.Clone();
            Seq opt2 = seq.Clone();

            int deleted1;
            int deleted2;

            opt1.MergeWith(nextSeq, 'A', out deleted1);
            opt2.MergeWith(nextSeq, 'B', out deleted2);

            int total1 = deleted1 + Letters2Rec(S.Substring(reader.CurrentPos), opt1);
            int total2 = deleted2 + Letters2Rec(S.Substring(reader.CurrentPos), opt2);

            // Console.WriteLine(seq);
            // Console.WriteLine(opt1);
            // Console.WriteLine(opt2);
            // Console.WriteLine();
            return(total1 < total2 ? total1: total2);
        }
Пример #2
0
        // public static int Letters(string S)
        // {
        //     int totalDeleted = 0;
        //     var reader = new SeqReader(S);
        //     Seq seq = reader.ReadNext();
        //     Seq nextSeq;
        //     // Console.WriteLine("Orig {0}", S);
        //     while ((nextSeq = reader.ReadNext()) != null)
        //     {
        //         // Console.WriteLine($"Merged {seq}, next: {nextSeq}");
        //         seq.MergeWith(nextSeq, out var deleted);
        //         totalDeleted += deleted;
        //     }

        //     // Console.WriteLine($"Final: {seq}");
        //     return totalDeleted;
        // }
        public static int Letters2(string S)
        {
            var reader = new SeqReader(S);
            Seq seq    = reader.ReadNext();

            return(Letters2Rec(S.Substring(reader.CurrentPos), seq));
        }