题目:Give 7 numbers, range from 0-13. The number of 0 is uncertain, other numbers can appear only once. 0 can be converted to any number. Please check whether or not it contains 5 continuous numbers
取到7个数,0可以重复,其他不重复,0可以充当任意数,判断7个数里面是否存在5个连续数1,5,2,4,0,13,10 0->3 1,2,3,4,5,10,13 return true1,5,2,0,0,13,10 0->3 0->4 1,2,3,4,5,10,13 return true1,5,6,0,0,13,10 return false 实现代码:
/**/ ///jailusd@hotmail.com///2006-09-08 using System; using System.Collections.Generic; using System.Text; namespace SevenNumber { class Program { static List<int> SevenNumber = new List<int>(); static List<int> FiveNumber = new List<int>(); static List<int> ZeroInsteadOf = new List<int>(); static void Main(string[] args) { int intZeroCount = 0; //随机7个产生0-13整数,除了0其它数字不能重复 Random myRandom = new Random(); while (SevenNumber.Count < 7) { int intTemp = myRandom.Next(0, 14); if (intTemp == 0) { intZeroCount++; SevenNumber.Add(0); Console.Write(intTemp.ToString() + " "); } else if (!SevenNumber.Contains(intTemp)) { SevenNumber.Add(intTemp); Console.Write(intTemp.ToString() + " "); } } SevenNumber.Sort(); //排序 Console.Write(" "); //输出排序后的七个数 for (int i = 0; i < 7; i++) { Console.Write(SevenNumber[i].ToString() + " "); } bool blResult = false; //以下为核心算法 for (int i = intZeroCount; i < 7; i++) { int intTemp1 = 0; int intTempZero = intZeroCount; FiveNumber.Add(SevenNumber[i]); for (int ii = i; ii < 6; ii++) { intTemp1 = SevenNumber[ii + 1] - SevenNumber[ii] - 1; if (intTemp1 == 0) { FiveNumber.Add(SevenNumber[ii + 1]); } else if (intTemp1 <= intTempZero) { intTempZero -= intTemp1; for (int j = 1; j <= intTemp1; j++) { FiveNumber.Add(SevenNumber[ii] + j); ZeroInsteadOf.Add(SevenNumber[ii] + j); } FiveNumber.Add(SevenNumber[ii + 1]); } else { for (int j = 1; j <= intTempZero; j++) { FiveNumber.Add(SevenNumber[ii] + j); ZeroInsteadOf.Add(SevenNumber[ii] + j); } ii = 5; } } if (FiveNumber.Count >= 5) { blResult = true; Console.Write(" "); for (int m = 0; m < ZeroInsteadOf.Count; m++) { Console.Write("0->" + ZeroInsteadOf[m].ToString() + " "); } Console.Write(" "); for (int m = 0; m < FiveNumber.Count; m++) { Console.Write(FiveNumber[m].ToString() + " "); } i = 7; } else { FiveNumber.Clear(); ZeroInsteadOf.Clear(); } } if (blResult) { Console.Write(" return true;"); } else { Console.Write(" return false;"); } Console.ReadLine(); } }}运行结果:
转载于:https://www.cnblogs.com/jailu/archive/2006/09/09/499369.html