本帖最后由 ywscr0000 于 2012-11-10 16:07:40 编辑

解决方案 »

  1.   

    这种数据一般都是key,value的形式的吧?你这曲线数据貌似只有x..没有y..
      

  2.   

     public Dictionary<string,int> One(double[] d)
            {
                double begin = 0;
                double end = 1;
                Dictionary<string, int> di = new Dictionary<string,int>();
                for (int i = 0; i < d.Length - 1; i++)
                {
                    for (int j = i + 1; j < d.Length - 1; j++)
                    {
                        begin = d[i];
                        end = d[j];        
                        if ((end - begin) / begin >= 0.02)
                        {
                            di.Add("begin" + i, i);
                            di.Add("end" + i, j);
                            break;
                        }
                    }
                }
                return di;
            }        public int[] Two(double[] d)
            {
                double begin = 0;
                double end = 1;
                double temp = 0;
                int[] jieguo = new int[2];
                for (int i = 0; i < d.Length - 1; i++)
                {
                    for (int j = i + 1; j < d.Length - 1; j++)
                    {
                        begin = d[i];
                        end = d[j];
                        if ((end - begin) / begin >= 0.02)
                        {
                            if (temp < Math.Sqrt(begin * begin + end * end))
                            {
                                temp = Math.Sqrt(begin * begin + end * end);
                                jieguo[0] = i;
                                jieguo[1] = j;
                            }
                            break;
                        }
                    }
                }
                return jieguo;
            }没有尽量多...只有最多或最少...或从多少到多少...第一个方法是(startVal-endVal)/startVal的绝对值大于等0.02(2%)的元素的坐标(索引从0开始)第二个方法是计算出的线段"最"长至于斜率..数学不好不知道这东西怎么算