13个数的问题

题目: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 true
1,5,2,0,0,13,10  0->3 0->4 1,2,3,4,5,10,13 return true
1,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(014);

                
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();
        }

    }

}


运行结果:

posted @ 2006-09-09 03:14  Jailu  阅读(330)  评论(3编辑  收藏  举报