1、for(int i=0;i++,i<4){
     for(int j=0,j++,j<4)
       if j<i then print(j) else print(i)
     println("")
   }

解决方案 »

  1.   

    第三个只提供一个思路,1^表示1的平方。以4 个数为例;
       0^+1 1^+1   2^+1   3^+1
       2^   1^+2   2^+2   3^+2
       3^   3^-1   2^+3   3^+3
       4^   4^-1   4^-2   3^+4
    不难看出在* * * *这样的矩阵里是有规律可循的,就是
                * * *
                  * *
                    *
    for(i=0,i++,i<4)
      for(j=0,j++,j<4)
       i^+j+1
    而在剩余的矩阵里存在的规律是(i+1)-j
      

  2.   

    第2个对 原数列做一次变换即凡是i+j为偶数的做对角的调换
    如下:  1  2  4  7
            3  5  8  11
            6  9  12 14
            10 13 15 16
    第一行为1,2,4,7,相邻数之间的差值为1,2,3是依次递增的,所以可以很快确定第一行的数,将上面的数列还是分为两个半角矩阵,如下:
            1  2  4  7
            3  5  8
            6  9   
            10
    这个矩阵可以通过1,2,4,7得到
    规律是 取其坐标i,j,如果i+j与1,2,4,7中任意一个的坐标相等则取出这个数+他们的j坐标的差值就是了,比如6吧,他的i=2,j=0,则可以去出4的i=0,j=2,坐标和相等,用4+4[j]-6[j]=6了,下半个矩阵规律差不多,再按上面的变换做个逆变换,就能打印了。
              
         
      

  3.   

    4.int n = 4;int cols = 2 * n - 1;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<cols; j++)
        {
            if(j < n)
            {
                if(j > (n - i - 2))
                    System.out.print(j - (n - i) + 2);
                else
                    System.out.print(' ');
            }
            else
            {
                if((j - n) < i)
                    System.out.print(i + n - j);
                else
                    System.out.print(' ');                  
            }
        }
        System.out.println();
    }
      

  4.   

    第一个:
    for (i=0;i<4 ;i++ )
    {
        for (j=0;j<4 ;j++ )
        {
            if (j>i)
            {
               System.out.println("("+i+")"); 
            }
            else
            {
                System.out.println("("+j+")");                 
            }
        }
    }
    对不对
      

  5.   

    有四个都搞定的没有
    给我发邮件
    [email protected]
      

  6.   

    2.//计算每条斜线上的最小值:1 2 4 7 11 14 16
    int[] minValues = new int[2 * n - 1];
    minValues[0] = 0;
    for(int i =1; i<minValues.length; i++)
    {
        if(i <= n)
            minValues[i] = minValues[i - 1] + i;
        else
            minValues[i] = minValues[i - 1] + minValues.length - i + 1;
    }for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            //计算当前位置的值相对于所在斜线最小值的偏移
            int offset = 0;
            if(((i + j) & 1) != 0)
            {
                if (i + j < n)
                    offset = i;
                else
                    offset = n - j - 1;
            }
            else
            {
                if (i + j < n)
                    offset = j;
                else
                    offset = n - i - 1;
            }        int value = minValues[i+j] + offset + 1;
            System.out.print(value);
            if(value < 10)
                System.out.print(' ');
            System.out.print(' ');
        }
    }
      

  7.   

    3.
    int n = 4;for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            int value = 0;
            if(j > i)
                value = j * j + i;
            else
                value = (i+1) * (i+1) - j;        System.out.print(value);
            if(value < 10)
                System.out.print(' ');
            System.out.print(' ');
        }
        System.out.println();
    }