weixin_42309929 2009-05-17 21:07
浏览 328
已采纳

二维数组的初始化!

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条回答 默认 最新

  • wang_jian_bo 2009-05-17 21:07
    关注

    我比较懒不愿意写脚本解释程序,看看高手们如何解决
    [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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算