【发布时间】:2013-12-31 15:46:27
【问题描述】:
我最近的练习要求我这样做:
"给定一个 N*M 的多维数组(其中 N 是行,M 是列),如果多维数组可以被视为镜像,则创建一个返回 TRUE 的函数。如果该多维数组可以被视为 MIRROR,则数组[i][j]===数组[j][i]"。
我的想法很基本(认为数组已经初始化):
按要求进行小修改---
var rows=prompt(), columns=prompt(); //I usually use an asknum() function
var matrix = new Array (rows);
function myMatrix (arr,col,rows){
for(i=0;i<arr.length;i++){
myArray[i] = new Array()
for(j=0;j<col;j++){
myArray[i][j]=asknum(); //this is a prompt function specified to insert numbers
}
}
myMatrix(matrix,columns,rows);
var isMirror=0; //counter to check if it is or is not a mirror
var getMatrix = function (rows,columns) {
if(rows===columns) {
return rows*(columns-1);
}
}
function findMirror (arr) {
for(i=0;i<arr.length;i++){
for(j=0;j<arr[i].length;j++){
if(arr[i][j]===arr[i.length-1-j][j.length-1-j] && i!=j){
isMirror++;
}
}
}
if(isMirror===getMatrix(rows,columns)){
return true;
} else {
return false;
}
}
findMirror(matrix);
2 可能的矩阵,以便您更好地理解我的思维方式:
3x3 5x5
[1,2,3] [1,2,3,4,5]
[2,1,2] [2,2,2,1,4]
[3,2,1] [3,2,3,2,3]
[4,1,2,4,2]
[5,4,3,2,1]
正如您自己所见,在 3x3 镜像中(不计算主对角线的元素),镜像元素的数量为 6,并且 3*2=6。在 5x5 镜像中,元素个数为 20,5*4=20 以此类推。我已经尝试了 7x7,但我猜这是一个可行的理论,所以我围绕这种可能性研究了我的函数。
帮忙,谢谢
【问题讨论】:
-
你能发布一个输入/输出的例子吗?将矩阵传递给函数时,如何在 JS 中表示矩阵?
-
您描述了一个要解决的问题。你有代码。究竟是什么在您需要帮助的代码中不起作用?
-
我有一个无效的代码,否则我不会发布它 XD
标签: javascript arrays matrix multidimensional-array