第一个:
设计一个三角螺旋输出如下:
12 93 10 84 5  6  7 第二个:
当N=4时能输出以下数字, 其中N为通用的,当N=任何一个数时都能输出以下规律的图形。
1     2     3     4
11    9     10    5
15    12    8     6
16    14    13    7第二个 是蛇形三角+螺旋三角拼接成的矩形,11-12-13 这条斜线是蛇形  1-9-8-7是螺旋。不知道如何写啊 各位 给出详细代码和注释啊。

解决方案 »

  1.   

    输出下三角矩阵螺旋数,比如,输入为4,则输出:1 
    2 9 
    3 10 8 
    4 5 6 7 
    输入为5,则输出:1 
    2 12 
    3 13 11 
    4 14 15 10 
    5 6 7 8 9 
    代码如下,大致思想就是设一个方向变量,-1为向下,0为向右,1为向左上,然后控制二维数组下标为数组赋值,最后打印。修改print()方法的传入参数即可。
    view plaincopy to clipboardprint?public class Sort {  
        public static void main(String[] args){  
            print(5);  
        }  
        static void print(int n){  
            int l = n;  
            int sum = 0;  
            for(int i=1; i<=n; i++){  
                sum += i;  
            }  
            int a[][] = new int[n][n];  
            int s = 1;  
            int i = 0, j = 0;  
            int d = -1;  
            for(int k=1; k<=sum; k++){  
                switch (d) {  
                case -1:  
                    a[i][j] = s++;  
                    if(i<n-1){  
                        i++;  
                    }  
                    else{  
                        n--;  
                        j++;  
                        d = 0;  
                    }  
                    break;  
                case 0:  
                    a[i][j] = s++;  
                    if(i == (l-1)){  
                        if(j<i){  
                            j++;  
                        }  
                        else{  
                            i--;  
                            j--;  
                            d = 1;  
                        }  
                    }  
                    else if(a[i][j+1] == 0){  
                        j++;  
                    }  
                    else{  
                        i--;  
                        j--;  
                        d = 1;  
                    }  
                    break;  
                case 1:  
                    a[i][j] = s++;  
                    if(a[i-1][j-1] == 0){  
                        i--;  
                        j--;  
                    }  
                    else{  
                        i++;  
                        d = -1;  
                    }  
                    break;  
                default:  
                    break;  
                }  
            }  
            for(int p=0; p<l; p++){  
                for(int q=0; q<=p; q++){  
                    System.out.print(a[p][q] + " ");  
                }  
                System.out.println();  
            }  
        }  
    }  
      

  2.   

    看看可以不            int n = 6;
                int[,] arr = new int[n, n];
                arr[0, 0] = 1;
                int X=0,Y=0;
                for (int i = 0; i < n; i++)
                {
                    for (int k = 0; k < n - i; k++)
                    {
                        if (i % 3 == 1)
                        {
                            arr[X, Y] = arr[X, Y - 1] + 1;
                            if (k == n - i - 1)
                            {
                                X--;
                                Y--;
                                break;
                            }
                            Y++;
                        }
                        if (i % 3 == 0)
                        {
                            if (X - 1 < 0)
                            {
                                X++;
                                continue;
                            }
                            arr[X, Y] = arr[X - 1, Y] + 1;
                            if (k == n - i - 1)
                            {
                                Y++;
                                break;
                            }
                            X++;
                        }
                        if (i % 3 == 2)
                        {
                            if (X < 0 || Y < 0)
                                continue;
                            arr[X, Y] = arr[X + 1, Y + 1] + 1;
                            if (k == n - i - 1)
                            {
                                X++;
                                break;
                            }
                            X--;
                            Y--;
                        }
                    }
                }
      

  3.   

    先说第一个,第二个下周上班了再弄。            int size = 10;            int i=1;
                int x = 0;
                int y = 0;
                int[,] A = new int[size, size];            for (int j = 0; j < size; j++)
                {
                    for (int k = 0; k < size; k++)
                    {
                        A[j, k] = 0;
                    }
                }            int flag = size * (size + 1) / 2;            while (i <= flag)
                {
                    if (x + 1 < size)
                    {
                        if (A[x + 1, y] == 0)
                        {
                            A[x, y] = i;
                            i++;
                            x++;
                            continue;
                        }
                    }                if (y + 1 < size)
                    {
                        if (y <= x)
                        {
                            if (A[x, y + 1] == 0)
                            {
                                A[x, y] = i;
                                i++;
                                y++;
                                continue;
                            }
                        }
                    }                while (A[x, y] == 0)
                    {
                        A[x, y] = i;
                        i++;
                        if (A[x - 1, y - 1] == 0)
                        {
                            x--;
                            y--;
                        }
                        else
                        {
                            x++;
                            break;
                        }
                    }
                }            for (int j = 0; j < size; j++)
                {
                    for (int k = 0; k <= j; k++)
                    {
                        Console.Write("{0}\t", A[j,k]);
                        if (j == k)
                        {
                            Console.WriteLine();
                        }
                    }
                }            Console.ReadLine();