Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数组中的负索引转换为正索引(三项式三角形)_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 将数组中的负索引转换为正索引(三项式三角形)

Java 将数组中的负索引转换为正索引(三项式三角形),java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我试图找到三项式系数,我想避免在数组中使用负索引。在某些情况下,i或j将变为负值,并返回数组越界错误。是否可以将负索引中包含的数组镜像为正索引 下面是递归公式: 我认识到T(0,-1)=T(0,1)但是我如何实现它呢 例如: row 0: T(0, 0) = 1 , T(0, 1) = 0 ... row 1: T(1, 0) = T(0, -1) + T(0, 0) + T(0, 1) , T(2, 0) ... 三项式系数T(n,k)是x^(n+k)在(1+x+x^2)^n的展开式中的系

我试图找到三项式系数,我想避免在数组中使用负索引。在某些情况下,i或j将变为负值,并返回数组越界错误。是否可以将负索引中包含的数组镜像为正索引

下面是递归公式:

我认识到
T(0,-1)=T(0,1)
但是我如何实现它呢

例如:

row 0: T(0, 0) = 1 , T(0, 1) = 0 ...

row 1: T(1, 0) = T(0, -1) + T(0, 0) + T(0, 1) , T(2, 0) ...
三项式系数
T(n,k)
x^(n+k)
(1+x+x^2)^n的展开式中的系数

三项式三角形(中间索引为
0
,在
0
左侧为负数,在
0
右侧为正数):

注意:下面的代码从中间索引
0
到右侧遍历数组

此处为公共类classname{
公共静态void main(字符串[]args){
int n=Integer.parseInt(args[0]);
intk=Integer.parseInt(args[1]);
long[]DP=新长[n+1][k+1];
DP[0][0]=1;

对于(inti=0;i我已经找到了原因

可以通过在2D数组中初始化正确的长度来完成

long[][] tri = new long[n + 1][k + n + 1];
并使用Math.abs()处理j索引将流向负索引的实例

tri[i][j] = tri[i - 1][Math.abs(j - 1)] + tri[i - 1][j] + tri[i - 1][j + 1];

您可以按如下方式填充这样的数组:首先创建一个新的空数组,其高度
n
和宽度
2n+1
,用零填充,并将上中点的第一个条目设置为
1
,然后遍历行和列,并将其他条目设置为其上三个条目的总和:

T[i][j]=T[i-1][j-1]+T[i-1][j]+T[i-1][j+1];
代码:

int n=7;
//用零填充的新数组
int[]arr=新int[n][2*n+1];
//第一项
arr[0][n]=1;
//迭代数组中的行
//从第二个开始
对于(int i=1;i
//输出
对于(int[]行:arr){
for(整型单元格:行)
如果(单元格>0)
System.out.printf(“%3d”,单元格);
其他的
系统输出打印(“”);
System.out.println();
}
输出:

                              1                             
                          1   1   1                         
                      1   2   3   2   1                     
                  1   3   6   7   6   3   1                 
              1   4  10  16  19  16  10   4   1             
          1   5  15  30  45  51  45  30  15   5   1         
      1   6  21  50  90 126 141 126  90  50  21   6   1     

另见: