二维数组的初始化!

int num[3][4];
  for(i=0;i <3;i++)
        for(t=0;t <4;t++)
    num[i][t] = (i*4)+t+1;

上面代码初始化1到12的二维矩阵,由于数据很规律,很容易得到(i*4)+t+1赋值语句,
一般二维数组的初始化也都是根据实际情况来判断,

比如


1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
该矩阵中的数字很规则,在实际解决该问题时,只需要把数值的规律描述出来即可。
实现思路:声明一个变量n,代表矩阵的阶,声明和初始化一个nXn的数组,根据数据的规律,则对应的数值为(行号 + 列号 + 1),当数值比n大时,取和n的余数


根据判断都可以得到赋值语句,可是假如我们的数据很复杂,但从判断很难得到这个初始化赋值语句,那该怎么办,有没有规律可循?

换句话说,对应一个矩阵怎么样用数学归纳法证明矩阵的i行j列的数据等于(i*4)+t+1,或者是(行号 + 列号 + 1)或者是其他的什么东西?

2个回答

我比较懒不愿意写脚本解释程序,看看高手们如何解决
[code="java"]package com.saturday;

import java.lang.reflect.Array;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class TestReflax {
private static ScriptEngineManager scriptMgr=new ScriptEngineManager();
private static ScriptEngine scriptEng=scriptMgr.getEngineByName("javascript");

public static void main(String[] args){
    double[][] matrix=new double[4][4];
    String sValExpres="($row+$col+1)<=4?($row+$col+1):($row+$col+1)%4";
    setMatrix(matrix,sValExpres);
    outputMatrix(matrix);
}

public static void outputMatrix(double matrix[][]){
    int nRowC=matrix.length;
    int nColC=matrix[0].length;
    for(int i=0;i<nRowC;i++){           
        for(int j=0;j<nColC;j++){
            System.out.print(matrix[i][j]+" ");
        }
        System.out.print("\n");
    }   
}

public static void setMatrix(double matrix[][],String sValExpres){
    int nRowC=matrix.length;
    int nColC=matrix[0].length;
    for(int i=0;i<nRowC;i++){           
        for(int j=0;j<nColC;j++){
            matrix[i][j]=getExpressVal(i,j,sValExpres);
        }
    }
}

public static double getExpressVal(int nRow,int nCol,String sValExpres){
    double nValue=0;        
    try{
        sValExpres=sValExpres.replaceAll("\\$row",nRow+"")
                             .replaceAll("\\$col",nCol+"");
        nValue=(Double)scriptEng.eval(sValExpres);
    }catch(Exception ex){           
    }

    return nValue;
}

}[/code]

果然被移动了,javaeye的规矩还真是蛮严格的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问