微软bing比赛,时间复杂度为8的,很有成就感的代码,结果一提交就被告知,挑战失败

为保护版权,公布一部分,另一部分去请去空间下载

另一部分:http://download.csdn.net/detail/u013526581/6872195

/*
 * 我写的程序时间复杂度<<<<<<<<<2^3=8
 * 因为每进行一次当前b的for循环之后会删除下一个B之前的没有用的字符,从而产生新的list
 * 而且在第一次的时候会做掐头去尾运算 ^_^
 * 程序是自己写的希望评委看一眼。:)
 * 亲自测试 216个随即字符
 * 用时7秒
 * 产生74454条记录
 * 测试用例:ignbignbignbignbignbingibnginbignbignbignbignbignbignbignibnginbignbignbignbignbignbingibnginbginbignbginbignbignbignbignbignbnbignbignbignbignbignbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbiiiiiiiiiii
 * 不求获奖,但求指点一二
 * 参赛ID       u013526581
 * 参赛昵称     儒雅的雀鹰
 */
using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace BiSai
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch stw = new Stopwatch();
            stw.Start();
            string line =
                "ignbignbignbignbignbingibnginbignbignbignbignbignbignbignibnginbignbignbignbignbignbingibnginbginbignbginbignbignbignbignbignbnbignbignbignbignbignbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbiiiiiiiiiii";
            //Console.WriteLine(line.Length.ToString());
            DealWith dealWith = new DealWith();
            int allCutCount = 0;

            if (!string.IsNullOrEmpty(line))
            {
                int count = 0;
                int value;
                int count_everyTimeCutPre_B = 0;

                List<string> cutHeadLeaveTail = dealWith.CutHeadLeaveTail(line, out value);

                allCutCount += value;

                List<string> secondDealWith = dealWith.secondDealWith(cutHeadLeaveTail, value, out count);

                while (secondDealWith.Count > 0)
                {
                    secondDealWith.RemoveAt(0);
                    secondDealWith = dealWith.CutHead(secondDealWith, out count_everyTimeCutPre_B);
                    allCutCount += count_everyTimeCutPre_B + 1;
                    dealWith.secondDealWith(secondDealWith, allCutCount, out count);
                }
                foreach (var s in secondDealWith)
                {
                    Console.WriteLine(s);
                }
                Console.WriteLine("All count is {0}", dealWith.Allcount);

            }

            Console.WriteLine("timing " + stw.Elapsed.Seconds);
            //Console.R e a d K e y();
        }
    }

    class DealWith
    {
        public double Allcount;
        /// <summary>
        /// 掐头函数
        /// </summary>
        /// <param name="str">输入一个字符串</param>
        /// <param name="cutCount">被掐掉多少个字符</param>
        /// <returns></returns>
        public List<string> CutHead(List<string> list, out int cutCount)
        {
            cutCount = 0;
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i] != "b")
                {
                    list.RemoveAt(0);
                    cutCount++;
                    i -= 1;
                }
                else
                {
                    break;
                }
            }
            return list;
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值