日期:2014-05-17  浏览次数:20635 次

数字1到7随机显示,且邻近随机数字不能相同

上面图片仅作参考,格子的多少自己定义的.
需求:
例如
6的邻近数字为1 和4, (数字"1"和"4"不能为同一个数)
3的邻近数字为1,2,4,5 (数字"1","2","4","5"不能为同一个数) 
也就是说中心的数字(例如"3"),它的"上下左右"四个数字(包括"3")不能为同一个数字,
且这四个数字不能等于它中心那个数字(也就是"3")

求理念,最好能有代码,谢谢.

------解决方案--------------------
思路很简单,就是上下左右,没有超出数组边界的,全部都要比一下,如果有雷同的,立马重新生成新的随机数,递归比较,直到不同为止。

注:int 数组在初始化时,默认值均为0。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int D = 3;     //维度,可自定义
            int[,] ary = new int[D, D];
            for (int i = 0; i < D; i++)
            {
                for (int j = 0; j < D; j++)
                {
                    ary[i, j] = GetTrueNum(ary, i, j, D);
                    Console.Write("{0}\t", ary[i, j]);
                }
                Console.WriteLine();
            }
            Console.Read();
        }//end of main

        private static int GetTrueNum(int[,] ary, int i, int j, int D)
        {
            int temp = new Random().Next(1, 8);
            if (