gpt4 book ai didi

objective-c - 我的帕斯卡三角形有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:37 24 4
gpt4 key购买 nike

我最近一直在寻找一些简单的编码挑战,并发现了 Pascal 的三角形 (here),并且我尝试在 C/Objective-C 中自己生成一个。对于那些不知道它是什么的人,该链接对其进行了很好的解释。

第四行后我开始变得奇怪,我就是想不通为什么。

我目前 5 次迭代的输出如下所示:

   1      
1 1
1 2 1
1 3 3 1
4 6 3 1

它应该是这样的:

    1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

到目前为止,这是我的代码。第一个循环只是一个重置循环(将所有值设置为 0)。实际逻辑主要发生在第二个循环中。第三个循环是将值连接起来并格式化为字符串。

为了提高可读性,我对这段代码的注释比我自己注释的要多得多。

int iterations, i, b, mid, chars, temp;
NSLog(@"Please enter the number of itereations");
scanf("%i",&iterations); // take users input and store it in iterations

// calculate where the first 1 should go.
if (iterations % 2 == 0) mid = (iterations)/2;
else mid = (iterations+1)/2;

chars = iterations*2;

int solutions[iterations][chars];

// reset loop
for (i = 0; i<iterations; i++) {
for (b = 0; b<chars; b++) {
solutions[i][b] = 0;
}
}

solutions[0][mid] = 1; // place the initial 1 in first row

for (int row = 1; row<iterations; row++) {
for (int chi = 0; chi<chars; chi++) {
temp = 0;
if (chi > 0) {
temp += solutions[row-1][chi-1]; // add the one diagonally left
}
if (chi < iterations) {
temp += solutions[row-1][chi+1]; // add the one diagonally right
}
solutions[row][chi] = temp; // set the value
}
}

// printing below...

NSMutableString *result = [[NSMutableString alloc] initWithString:@"\n"];
NSMutableString *rowtmp;

for (i = 0; i<iterations; i++) {
rowtmp = [NSMutableString stringWithString:@""];
for (b = 0; b<chars; b++) {
if (solutions[i][b] != 0) [rowtmp appendFormat:@"%i",solutions[i][b]];
else [rowtmp appendString:@" "]; // replace any 0s with spaces.
}
[result appendFormat:@"%@\n",rowtmp];
}

NSLog(@"%@",result);
[result release];

我感觉问题可能与偏移量有关,但我不知道如何解决它。如果有人能发现我的代码哪里出了问题,那就太好了。

最佳答案

看起来(粗略地看)原来的中点计算是不正确的。我认为它应该只是:

mid = iterations - 1;

在 5 次迭代的示例中,中点需要位于数组位置 4。每次迭代都会向左“移动”一个位置。然后,第 2 次迭代(第 2 行)将在位置 3 和 5 放置 1。第 3 次迭代在 2 和 6。第 4 次在 1 和 7。第 5 次和最后一次迭代将在 0 和 8 处填充 1。

此外,用于临时添加的第二个 if 语句应该如下所示,否则它会读取数组边界的末尾:

if (chi < iterations - 1) {

关于objective-c - 我的帕斯卡三角形有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com