首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

算法求解,控制台解决方法

2013-02-25 
算法求解,控制台有两个一维数组,长度相等,数量不等,现在要两组数中对应的值相除,得到第三组数,找出第三组

算法求解,控制台
有两个一维数组,长度相等,数量不等,现在要两组数中对应的值相除,得到第三组数,找出第三组数中的最大值,并将与之对应的第一组中的数值自减1,再次相除,重复之前的过程,我是这样做的,求大神指出问题,谢谢


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NumMax
{
    class Program
    {
        static void Main(string[] args)
        {
            float[] arrFirst = { 3, 2, 6, 4, 1, 9 };
            float[] arrSecond = { 7, 14, 7, 12, 5, 22 };
            float[] arrThird = new float[arrFirst.Length];
            float[] arrForth = new float[arrFirst.Length];
            //float temp = 0;
            float max = arrThird[0];
            int index = 0;
            for (int x = 0; x < arrFirst[index]; x++)
            {
                for (int i = 0; i < arrFirst.Length; i++)
                {
                    arrThird[i] = arrFirst[i] / arrSecond[i];
                }
                for (int j = 0; j < arrThird.Length; j++)
                {
                    if (arrThird[j] > arrThird[index])
                    {
                        index = j;
                        max = arrThird[j];
                        arrForth[j] = max;
                    }
                    if (arrForth[j] == 0)
                    {
                        return;
                    }


                    else
                    {
                        Console.WriteLine(arrForth[j]);
                        Console.Read();
                    }
                }
                arrFirst[index] -= 1;
            }
        }
    }
}


[解决办法]
  float[] arrFirst = { 3, 2, 6, 4, 1, 9 };
            float[] arrSecond = { 7, 14, 7, 12, 5, 22 };

            float[] arrThird = arrFirst.Select((x, i) => x / arrSecond[i]).ToArray<float>();
            var max = arrThird.Max();
            var index = Array.IndexOf(arrThird, max);

            Console.WriteLine(max); 
            Console.Read();

            if(index>-1)
                arrFirst[index]--;

[解决办法]
linq的用法

float[] arrFirst = { 3, 2, 6, 4, 1, 9 };
            float[] arrSecond = { 7, 14, 7, 12, 5, 22 };

            float[] arrThird = arrFirst.Select((x, i) => x / arrSecond[i]).ToArray<float>();  //数组1和数组2对应的相除得第3个数组
            var max = arrThird.Max(); //取第三个数组最大的值
            var index = Array.IndexOf(arrThird, max); //去最大值对应的位置索引

            Console.WriteLine(max); //输出这个最大值
            Console.Read();

            if(index>-1)  //其实这个判断可以去掉,肯定会大于-1的
                arrFirst[index]--; //将最大值对应位置的第一个数组自减1

热点排行