使用m == n

时间:2016-10-05 17:00:42

标签: c++ arrays

我需要你的帮助。

我遇到了这个有趣的问题,看起来更像是家庭作业,但它真的很复杂。

我需要填充这个数字数组中的元素,在给定某些数字列表的情况下,我需要将它们放在数组的对角线中,然后用初始数字的填充填充其余的位置,如果我举一个例子,我想我可以更好地解释一下:

数组:7 6 5 4 3 2 1 -1

数组中填充了以下数字:7 6 5 4 3 2 1

La array [n] [m]是:

7 13 18 22 25 27 28

   

13 6 11 15 18 20 21

   

18 11 5 9 12 14 15

   

22 15 9 4 7 9 10

   

25 18 12 7 3 5 6

   

27 20 14 9 5 2 3

   

28 21 15 10 6 3 1

我尝试了很多方法,用c ++:

//Here is the simple thing, setting the diagonals of the array[m][n]
for(int row=0; row < maxNumber; fila++){
    for(int column=0; column < maxNumber; column++)
    {
        if(row == column)
        {
            matAuto[row][column] = elements[row];
        }
    }
 }

我试图用数组的元素创建一个临时数组,并在循环中根据它们的位置求和数,你知道像冒泡排序(array [m] [n] = listNum [n] + LISTNUM [N + 1]

  if(row < column)
  { 
     matAuto[row][column] = elements[row] + elements[row+1];
  }

  if(row < column)
  { 
     matAuto[row][column] = elements[column] + elements[column+1];
  }

  if(row < column)
  { 
     matAuto[row][column] = elements[column] + elements[row+1];
  }

  if(row < column)
  { 
     matAuto[row][column] = matAuto[row][column] + matAuto[row+1][column+1];
  }

所以......没什么值得的。

我不知道添加完整代码是否正确,不长,但是好,只是常见的C ++内容,但我用西班牙语得到它,希望它不会让你们感到困惑。

2 个答案:

答案 0 :(得分:0)

您只需要解决其中的一半,并通过更改索引在镜像中添加相同的数字。

你可以这样做:

  • 填充对角线
  • 循环行:r = 1 - &gt; colmax -1 //方阵!
    • 循环c = r - &gt; colmax-1次再次
    • 设定值为[c] [c + 1] = [c] [c-1] + [c] [c + 1]

[c] [c + 1]处的索引与对角线平行,偏移量为r。

[c] [c-1]处的索引是行

中的先前值

[c + 1] [c + 1]处的索引是

列中的下一个值

完成后,通过复制您计算的内容填写另一半。

类似的东西。

答案 1 :(得分:0)

正如@Makketronix所提到的,你可以使用你的两个三角矩阵是对称的这一事实。

SetEnv APPLICATION_ENV development

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} -s [OR]
  RewriteCond %{REQUEST_FILENAME} -l [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^.*$ - [NC,L]
  RewriteRule ^.*$ index.php [NC,L]
</IfModule>

结果如下:

enter image description here