算法不是太好不过,提供一个方式
有兴趣的可以试一下
int d = int.Parse( this.TextBox1.Text );
if( d>1 )
{
int[,] ia = new int[d,d]; int ix = 0,iy = 0,il=0;
int layer = d/2;
if( d%2 != 0 )
layer++;

for( int count=1;il<layer;il++ )
{
for( ;iy<d-il;iy++,count++ )
ia[ix,iy] = count;

for( iy--,ix++;ix<d-il;ix++,count++ )
ia[ix,iy] = count;

for( ix--,iy--;iy>=il;iy--,count++ )
ia[ix,iy] = count; for( ix--,iy++;ix>il;ix--,count++ )
ia[ix,iy] = count; ix++;
iy++;
} for( int i=0;i<d;i++ )
{
for( int j=0;j<d;j++ )
Response.Write( ia[i,j].ToString()+"  " );
Response.Write( "<br>" );
}
}

解决方案 »

  1.   

    我的算法,赋值自己去做吧!
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.TextBox textBox1;
    private Standard.FlatButton flatButton1;
    private System.ComponentModel.Container components = null;
    public static int n;
    public static int num=10;
    public static int [,] arr =new int[num,num];
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void flatButton1_Click(object sender, System.EventArgs e)
    {
    int i,j;
    for(i=0;i<num;i++)
    {
    for(j=0;j<num;j++)
    {
    textBox1.Text+=arr[i,j].ToString()+",";
    }
    textBox1.Text+="\r\n";
    }
    }
    private void Form1_Load(object sender, System.EventArgs e)
    {
    int i,j,a,b,c,d;
    n=0;
    a=0;
    b=num;
    c=0;
    d=num;
    for(i=a;i<b;i++)
    {
    for(j=c;j<d;j++)
    {
    n+=1;
    arr[i,j]=n;
    if (j==d - 1)
    {
    ji1(j,i+1,d);
    a=i+1;
    b=d-1;
    c=i+1;
    d=d-1;
    }
    }
    }
    }
    private void ji1(int arri,int bgn,int end)
    {
    int arrj;
    for(arrj=bgn;arrj<end;arrj++)
    {
    n+=1;
    arr[arrj,arri]=n;
    if (arrj==end - 1)
    {
    ij2(arrj,end - 2,bgn - 2);
    }
    }
    }
    private void ij2(int arri,int bgn,int end)
    {
    int arrj;
    for(arrj=bgn;arrj>end;arrj--)
    {
    n+=1;
    arr[arri,arrj]=n;
    }
    ji2(end+1,bgn,end+1);
    }
    private void ji2(int arri,int bgn,int end)
    {
    int arrj;
    for(arrj=bgn;arrj>end;arrj--)
    {
    n+=1;
    arr[arrj,arri]=n;
    }
    }
    }