使用它们的数组成员 [英] array members working with them

查看:73
本文介绍了使用它们的数组成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨。

i的代码如下:



Hi.
i have the code below:

int dynamicbinomial(int n, int k)
{
	int* b = new int[n,k];
	for(int i=0; i<= n; i++)
	{
		for(int j=0; j<= min(i,k); j++)
		{
			if(j==0 || j==i)
				b[i,j] = 1;
			else if(j==1 || j==i-1)
				b[i,j] = i;
			else
			        b[i,j] = b[i-1,j-1] + b[i-1,j];			
		}
	}
	return b[n,k];
}





它工作正常,但在最后一行:



it works correctly but in the last line:

b[i,j] = b[i-1,j-1] + b[i-1,j];





到达该行时它确实如此:

b [i,j] = b [0,j-1] + b [1,j-1] + b [2,j-1] + b [3, j-1] + ... + b [i-1,j];



它显示行(i-1)中所有数字的总和0到j



如果你输入5作为n和3作为k你必须有一个矩阵如下:



when it reaches that line it does like it:
b[i,j] = b[0,j-1] + b[1,j-1] + b[2,j-1] + b[3,j-1] + ... + b[i-1,j] ;

it shows the sum of all numbers in line (i-1) form 0 to j

if you enter 5 as n and 3 as k you must have a matrix as below:

1
1  1
1  2  1
1  3  3  
1  4  6  
1  5  10 





但它会生成一个类似矩阵:



1

1 1

1 2 1

1 3 3

1 4 7

1 5 12





跟踪它:



1- i = 0 j = 0 k = 3 min(i,k)= 0 b [i,j] = b [0,0] = 1

2- i = 1 j = 0 k = 3 min(i,k)= 1 b [i,j] = b [1,0] = 1



3 i = 1 j = 1 k = 3 min(i,k)= 1 b [i,j] = b [1,1] = 1



4- i = 2 j = 0 k = 3 min(i,k)= 2 b [i,j] = b [2,0] = 1



5 i = 2 j = 1 k = 3 min(i,k)= 2 b [i,j] = b [2,1] = 2



6- i = 2 j = 2 k = 3 min(i,k)= 2 b [i,j] = b [2,2] = 1



7- i = 3 j = 0 k = 3 min(i,k)= 3 b [i,j] = b [3,0] = 1



8- i = 3 j = 1 k = 3 min(i,k)= 3 b [i,j] = b [3,1] = 3



9- i = 3 j = 2 k = 3 min(i,k)= 3 b [i,j] = b [3,2] = 3



10- i = 3 j = 3 k = 3 min(i,k)= 3 b [i,j] = b [3,3] = 1



11- i = 4 j = 0 k = 3 min(i,k)= 3 b [i,j] = b [4,0] = 1



12- i = 4 j = 1 k = 3 min(i,k)= 3 b [i,j] = b [4,1] = 4



13- i = 4 j = 2 k = 3 min(i,k)= 3 b [i,j] = b [4,2] = 7



1 4- i = 4 j = 3 k = 3 min(i,k)= 3 b [i,j] = b [4,3] = 4



15- i = 5 j = 0 k = 3 min(i,k)= 3 b [i,j] = b [5,0] = 1



16- i = 5 j = 1 k = 3 min(i,k)= 3 b [i,j] = b [5,1] = 5



17- i = 5 j = 2 k = 3 min(i,k)= 3 b [i,j] = b [5,2] = 12



见第13行?



but it makes a matrix like it:

1
1 1
1 2 1
1 3 3
1 4 7
1 5 12


traced it this way:

1- i= 0 j= 0 k= 3 min( i,k )= 0 b[i,j]= b[0,0]= 1
2- i= 1 j= 0 k= 3 min( i,k )= 1 b[i,j]= b[1,0]= 1

3- i= 1 j= 1 k= 3 min( i,k )= 1 b[i,j]= b[1,1]= 1

4- i= 2 j= 0 k= 3 min( i,k )= 2 b[i,j]= b[2,0]= 1

5- i= 2 j= 1 k= 3 min( i,k )= 2 b[i,j]= b[2,1]= 2

6- i= 2 j= 2 k= 3 min( i,k )= 2 b[i,j]= b[2,2]= 1

7- i= 3 j= 0 k= 3 min( i,k )= 3 b[i,j]= b[3,0]= 1

8- i= 3 j= 1 k= 3 min( i,k )= 3 b[i,j]= b[3,1]= 3

9- i= 3 j= 2 k= 3 min( i,k )= 3 b[i,j]= b[3,2]= 3

10- i= 3 j= 3 k= 3 min( i,k )= 3 b[i,j]= b[3,3]= 1

11- i= 4 j= 0 k= 3 min( i,k )= 3 b[i,j]= b[4,0]= 1

12- i= 4 j= 1 k= 3 min( i,k )= 3 b[i,j]= b[4,1]= 4

13- i= 4 j= 2 k= 3 min( i,k )= 3 b[i,j]= b[4,2]= 7

14- i= 4 j= 3 k= 3 min( i,k )= 3 b[i,j]= b[4,3]= 4

15- i= 5 j= 0 k= 3 min( i,k )= 3 b[i,j]= b[5,0]= 1

16- i= 5 j= 1 k= 3 min( i,k )= 3 b[i,j]= b[5,1]= 5

17- i= 5 j= 2 k= 3 min( i,k )= 3 b[i,j]= b[5,2]= 12

see line 13 ?

推荐答案

我修改了你的功能。希望能帮助到你。确保释放分配的内存。

I have modified your function. Hope it helps. Make sure to release the allocated memory.
int dynamicbinomial(int n, int k)
{
    int **b = new int*[n];
    for(int i = 0; i < n; ++i) {
    b[i] = new int[k];
    }

    // Print the address of the allocated array
    for (int i=0; i<n; ++i)
    {
        for (int j=0; j<k; j++)
        {
            std::cout<< &b[i][j] << " ";
        }
        std::cout<<"\n";
    }

    for(int i=0; i< n; i++)
    {
        for(int j=0; j< std::min(i+1,k); j++)
        {
            if(j==0 || j==i)
                b[i][j] = 1;
            else if(j==1 || j==i-1)
                b[i][j] = i;
            else
            {
                b[i][j] = b[i-1][j-1] + b[i-1][j];
            }

            // Print the values and address
            std::cout<<b[i][j] << " " <<std::cout<< &b[i][j] << " ";
        }
        std::cout<<"\n";
    }
    return b[n][k];
}


您是否仔细查看过您的代码?

让我们稍微缩小一下......

Have you looked closely at your code?
Let's just shrink it a bit...
int* b = new int[n, k];
for (int i = 0; i <= n; i++)
    {
    for (int j = 0; j <= Math.Min(i, k); j++)
        {
        b[i, j] = 1;
        }
    }

数组中有多少个元素,有多少元素分配给1?

how many elements are there in the array, and how many are you assigning "1" to?


这篇关于使用它们的数组成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆