说下我的思路,可以判断任意奇数个数的数字是否连续。
这里简化一下,对5个数字来说,求出平均数average,
那么肯定有一个数和average相等。
依次判断,如果5个数都和average不相等,那么5个数不连续。
5个数依次减去average的结果肯定是-2,-1,0,1,2五个数,当然可以乱序。
5个差值放在list中,依次移除实际5个数与average的差值,如果list中的成员全部移除,那么5个数才是连续的,否则不连续。代码如下- int[] numbers = { 5, 2, 3, 4, 1 }; //简化起见,没让用户手动输入。
- double avr = 1.0*numbers.Sum() / 5; //5个数的平均数,那么这个平均数肯定得跟5个数中的一个数相等。
- bool xx = true ;
- foreach (int n in numbers)
- if (avr == n)
- xx = false; //找到相等数,设置xx为false,,找不到则xx一直未true
- if (xx) //xx为true的时候,说明肯定不连续。
- {
- Console.WriteLine("不连续");
- Console.ReadKey();
- return;
- }
- //接下来 ,5个与平均数的差值为-2,-1,0,-1,-2
- List<int> request = new List<int>() { -2, -1, 0, 1, 2 };
- foreach (int n in numbers)
- {
- request.Remove(n - (int)avr); //每次移除一个差值,如果是连续的,那么request的5个成员应该被全部移除
- }
- Console.WriteLine(request.Count);
- if (request.Count != 0) //如果此时还有成员,说明之前的5个数不连续。
- {
- Console.WriteLine("不连续");
- Console.ReadKey();
- return;
- }
- Console.WriteLine("连续");
- Console.ReadKey();
- }
复制代码 |