Algorithm 如何在矩阵中添加值并使其以径向方式减少?

Algorithm 如何在矩阵中添加值并使其以径向方式减少?,algorithm,math,matrix,Algorithm,Math,Matrix,我得到了一个带有奇数行和奇数列的矩阵,所有位置都有0(零)个值,我想在矩阵的中心位置添加一个X值(例如16),并使周围的其他位置减少一个Y值(例如3),但以径向的方式,直到这些位置达到零 就像我创建的这个图像(我添加了颜色只是为了更好地理解): 我开始研究矩阵,我在网上搜索了一些类似的东西,可能会有所帮助,但没有什么是可以理解的。如何做到这一点?有一些for循环技巧可以做到这一点吗?以前有人试过吗?如果有人能帮忙,我将不胜感激。[编辑] 基于你的编辑,我想到了这个解决方案。因为您没有指定任何编

我得到了一个带有奇数行和奇数列的
矩阵,所有位置都有0(零)个值,我想在
矩阵的中心位置添加一个X值(例如16),并使周围的其他位置减少一个Y值(例如3),但以
径向
的方式,直到这些位置达到零

就像我创建的这个图像(我添加了颜色只是为了更好地理解):


我开始研究矩阵,我在网上搜索了一些类似的东西,可能会有所帮助,但没有什么是可以理解的。如何做到这一点?有一些
for循环
技巧可以做到这一点吗?以前有人试过吗?如果有人能帮忙,我将不胜感激。

[编辑]

基于你的编辑,我想到了这个解决方案。因为您没有指定任何编程语言,所以我将使用一些类似c的函数式编程。如果您需要的话,我将留给您将其转换为面向对象的工作

输入:

  • 以M[0,0]开始,以M[100'000100'000]结束的全局maxtrix(注意,为了便于理解,我想检查我是否到达板,您应该检查)
  • 第一个数字(X,Y)的位置(在示例5,5中)
  • 第一个名为N的数字(在您的示例16中)
  • 沿轴D的减量(在示例3中)

    例如,如果X=17,我们如何知道Y是15还是14


    [如果您使用这些信息编辑您的答案,我将尝试正确回答您]

    您遇到了什么问题。您可以在中使用这些数字创建一个数组。或者您希望构造任意大小的矩阵。在这种情况下,问题的规则是什么?对不起,我想我没有解释清楚。矩阵的所有初始值都为0,我需要一个函数在矩阵内的任意位置不断添加值,周围的位置必须以径向方式添加较低的值,直到达到零,就像热图一样。所以使用这里显示的值。这有多难?你不需要计算这些值。将它们放在一个数组中,然后将它们复制到大数组中。我问这个问题是因为我没有矩阵技能,这个图像和值不是由代码生成的。你不需要太多技能。它只是一个嵌套for循环,用于复制一些预定义的值。如果你不能做到这一点,我看不出你能用这个程序做什么。如果你需要雇佣一个程序员,这是一个错误的地方。您没有努力显示任何代码。你最初的标签有两种语言,这让我觉得这是一个算法问题。现在看来,您只是希望有人为您编写代码。我觉得你放弃得太快了。假装互联网不存在。花些时间思考、理解并解决你的问题。太棒了,我在想如何使用几个
    for loop
    s来解决这个问题,但是你发现了一个惊人的方法,非常简洁。现在我将把它翻译成Delphi,根据N和D值生成先前大小的矩阵,并将它们添加到主矩阵中。谢谢和祝贺。我很高兴能帮上忙。祝你工作顺利;)
    main(){
       computeValues(M, X, Y, N, D)
    }
    
    computeValues(M, X, Y, N, D){
       M[X,Y] = N
       if( N-D <= 0 ) return;
       if( M[X,Y-1] == 0 ){
          computeValues(M, X, Y-1, N-D, D)
       }
       if( M[X,Y+1] == 0 ){
          computeValues(M, X, Y+1, N-D, D)
       }
       if( M[X-1,Y] == 0 ){
          computeValues(M, X-1, Y, N-D, D)
       }
       if( M[X+1,Y] == 0 ){
          computeValues(M, X+1, Y, N-D, D)
       }
    }
    
      Y
    Y X Y
      Y