{
for (int j=0;j
for (int j=i;j>0;j--) //生成下一行数据 table[j]=table[j-1]+table[j]; //通式 } } }
18.输出下列方阵:
(1) 输出如下形式的数字方阵(当n=4时):
1 2 6 7
3 5 8 13 4 9 12 14 10 11 15 16 程序如下:
Public class Jmat {
Public static void main(String args[]){ } }
(2)输出如下形式的数字方阵(当n=4时): 1 2 5 10
4 3 6 11 9 8 7 12 16 15 14 13
〖解答〗采用二维数组的程序如下。
public class Jmat {
public static void main(String args[]) {
int n=4; int[][] mat = new int[n][n];
        int k=1;                                        for (int i=0;i             for (int j=0;j<=i;j++)                  mat[j][i] = k++;                                                for (int j=i-1;j>=0;j--)                 mat[i][j] = k++;         }    阶数  是自然数,递增变化 //k先赋值后自加   //  //k                     for (int i=0;i             for (int j=0;j                 System.out.print(\ \            System.out.println();         }     } }   19.找出一个二维数组的鞍点,即该位置的元素在该行上最大,在列上最小。也可能没有暗点。  〖命题〗一个二维数组如果有鞍点,那么它只有一个鞍点。 〖证明〗反证法。  设该二维数组已有一个鞍点,为M[i,j],则有  M[i,*] <= M[i,j] <= M[*,j]                                即i行上的所有元素均小于j列上的所有元素。 假设有另一个鞍点M[x,y],由(1)式知  (1)  M[i,y] <= M[x,j]                                         (2) 而M[x,y]应在该行上最大,有  M[x,y] >= M[x,j]                                       M[x,y]应在该列上最小,有  M[x,y] <= M[i,y]                                       根据(2)式,显然(3)和(4)式是不可能同时成立的。  因而假设有另一个鞍点M[x,y]是不成立的。由此证明。 〖解答〗采用二维数组的程序如下。  public class Dort {      public static void main(String args[])      {          int[][] mat = {{1,2,3},{4,5,6},{7,8,9}};          for (int i=0;i             for (int j=0;j         boolean find = false;                               //找到鞍点标记         int row=0;                                      //第1行下标          int max=0;                                      //记录当前行最大值的列下标         while (!find && row             max=0;                                     //初始设每行第1列值最大             for (int j=1;j //在row行上找最大值 //i、j是行、列下标 //输出二维数组元素  (3) (4)                      if (mat[row][j]>mat[row][max])              //mat[row][max]为该行最大值                     max = j;               boolean yes = true;                    //再判断mat[row][max]是否在列上最小             int j=0;              while (yes && j                 if (j!=row && mat[j][max]             System.out.println(\ \        else              System.out.println(\ null\    }    20.设一个一维数组的元素值为:7,4,8,9,1和5,请输出具有以下内容的方阵: 7 4  8  9  1  5 5 7  4  8  9  1 1  5  7  4  8  9 9  1  5  7  4  8 8  9  1  5  7  4 4  8  9  1  5  7  【答】程序如下:   public class Shift {      public static void main(String args[])      {          int table[] = {7,4,8,9,1,5};         System.out.println(\左移:\        for (int i=0;i             for (int j=0;j                 System.out.print(table[(i+j)%table.length]+\ \            System.out.println();         }           System.out.println(\左移:\        for (int i=0;i             int j=i;                 do             {                  System.out.print(table[j]+\ \                j=(j+1)%table.length;             }while (j!=i);             System.out.println();         }     } }