不好意思,补充代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        struct node
        {
            public int[,] state;
            public int parent;
        }        private void button1_Click(object sender, EventArgs e)
        {
            node[] Nodes = new node[10];
            Nodes[0].state = new int[3, 3];
            for (int i = 1; i < 10; i++)
            {
                Nodes[i].state = Nodes[0].state ;
                for (int j = 0; j < 3; j++)
                {
                    for (int k = 0; k < 3; k++)
                    {
                        if (Nodes[i].state[j, k] == 0)
                            Nodes[i].state[j, k] = i;
                    }
                }
            }
        }
    }
}
第一次循环后不知怎么回事Nodes[0].state被赋值?

解决方案 »

  1.   

    Nodes[i].state = Nodes[0].state ;  改成 Nodes[i].state=new int[3, 3]; 或者将
     struct node 
            { 
                public int[,] state; 
                public int parent; 
            } 
    改成
     class node 
            { 
                public int[,] state; 
                public int parent; 
            } 
      

  2.   

    Nodes[i].state = Nodes[0].state ; 
    改成Nodes[i].state=new int[3, 3]; 
    最外层循环从0开始;
    Nodes[i].state=new int[3, 3]; 这句不要。