计算一组数中是否存在中点数(如A+C=2B)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication3
{
    public partial class FrmInport : Form
    {
        public FrmInport()
        {
            InitializeComponent();
            label1.Text = "";
        }
        private void button1_Click(object sender, EventArgs e)
        {
        if(fileInport.ShowDialog()==DialogResult.OK)
     {
            label1.Text = "";
         using(FileStream fileStream= File.OpenRead(fileInport.FileName))
         {
          using(StreamReader streamReader=new StreamReader(fileStream))
              {
          string line=null;
                //int[] red = new int[6];声明定长数组
                int[] red; //声明动态数组
                StreamWriter streamWriter = new StreamWriter(@"c:/newtxt.txt");
          while((line=streamReader.ReadLine())!=null)
                {
              string[] strs=line.Split(' ');
                    red=new int[strs.Length];//为动态数组初始化空间         
                    for (int i = 0; i < strs.Length; i++)
                    {
                        red[i] = Convert.ToInt32(strs[i]);

                    }
                    //检查每一组数据是否存在中点数
                    if (ZhongDianHao(red))
                    {
                        label1.Text += line + "/n";
                        streamWriter.WriteLine(line);
                    }
             }
                streamWriter.Dispose();
              }
           }
        }
        }
        static public bool ZhongDianHao(int[] red)
        {
            int sum = 0;
            int length;
            length=red.Length;
            //检查所有红球的;
            for (int j = length - 1; j > 1; j--)
            {
                for (int i = 0; i < length - 3; i++)
                {
                    if (j >= i + 2) //必须保证有三个红球才能进行比较
                    {
                        sum = red[i] + red[j];
                        if (sum % 2 == 0)
                        {
                            int index = (i + j) / 2; // 2;取中间值的index
                            if (sum == red[index] * 2) return true;
                            else if (sum > red[index] * 2)
                            {
                                index = index + 1;
                                if (index < j)
                                {
                                    if (sum == red[index] * 2) return true;
                                    if (sum > red[index] * 2)
                                    {
                                        index = index + 1;
                                        if (index < j)
                                        {
                                            if (sum == red[index] * 2) return true;

                                        }

                                    }
                                }
                            }
                            else
                            {
                                index = index - 1;
                                if (index > i) //必须大于首号的index序号是个动态值
                                {
                                    if (sum == red[index] * 2) return true;
                                    if (sum < red[index] * 2)
                                    {
                                        index = index - 1;
                                        if (index > i) //必须大于首号的index序号是个动态值
                                        {
                                            if (sum == red[index] * 2) return true;
                                        }

                                    }

                                }

                            }
                        }
                    }
                }
            }
            return false;
        }
    }  
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值