作业帮 > 综合 > 作业

如果一个数组中连续0的个数小于5,则把0变为1

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/16 20:47:00
如果一个数组中连续0的个数小于5,则把0变为1
有一个数组,假设为{1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1}
如果连续的0的个数小于5,则把0变成1
最后的结果应该是 {1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1}
如果一个数组中连续0的个数小于5,则把0变为1
挺有意思的问题!见程序:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] s = { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 
                        1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
                        1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
                        0, 0, 0, 0, 1, 1, 1, 1 };
            int[] r = ConvertBytes(s);
            //Console.Write("{");
            //for (int i = 0; i < r.Length; i++)
            //{
            //    Console.Write(r[i].ToString() + ", ");
            //}
            //Console.Write("}");
        }

        static int[] ConvertBytes(int[] b)
        {
            List<ZeroSequence> list = new List<ZeroSequence>();
            bool zero = false;
            for (int i = 0; i < b.Length; i++)
            {
                if (b[i] == 0)
                {
                    if (!zero)
                    {
                        list.Add(new ZeroSequence() { Index = i, ZeroCount = 1 });
                        zero = true;
                    }
                    else
                    {
                        ZeroSequence seq = list.Last();
                        seq.ZeroCount += 1;
                    }
                }
                else
                {
                    zero = false;
                }
            }

            foreach (var z in list)
            {
                if (z.ZeroCount < 5)
                {
                    for (int i = z.Index, j = 0; j < z.ZeroCount; i++, j++)
                    {
                        b[i] = 1;
                    }
                }
            }
            return b;
        }
    }

    class ZeroSequence
    {
        public int Index { get; set; }
        public int ZeroCount { get; set; }
    }
}