gpt4 book ai didi

c# - 二维数组中选定元素的总和(盒子形状?)

转载 作者:行者123 更新时间:2023-11-30 20:22:28 25 4
gpt4 key购买 nike

我目前正在创建一个二维数组来表示要为游戏布置的网格上的元素。我希望能够对特定的元素 block 求和,但我似乎无法让我的函数正常工作,我怀疑有一种更简单的方法可以做到这一点。

数组示例:

int[6,6] myArray = {{2,1,4,3,1,2,5}
,{4,2,3,3,1,2,4}
,{3,4,9,1,2,7,5}
,{1,6,2,1,3,4,2}
,{2,1,4,6,2,1,0}
,{6,2,8,1,6,5,7}
,{7,6,10,3,9,7,2}};

当前代码:

int BoxSum(int x, int y, int x1, int y1,  int [,] arrayM) {
int Results = 0;
int xmod = (x1 - x) / Mathf.Abs (x1 - x);
int ymod = (y1 - y) / Mathf.Abs (y1 - y);
if (x1 > x & y1 > y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy++) {
Results += arrayM [ix, iy];
}
}
}
if (x1 > x & y1 < y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
if (x1 < x & y1 < y) {
for (int ix = x; ix <= x1; ix --) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
if (x1 < x & y1 > y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
return Results;
}

所以,如果我要输入:

(BoxSum(1,1,5,5,myArray));

(BoxSum(5,5,1,1,myArray));

我希望两者都得到 86(无论我是先在命令中输入 x,y 还是 x1,y1)。现在他们给了我不同的结果,86 和 0。

感谢您的帮助!

最佳答案

如果您希望无论哪个参数是高值/低值,它都能正常工作,您可以这样做。

    private int BoxSum(int x, int y, int x1, int y1, int[,] arrayM)
{
int lowestX = (x1 > x) ? x : x1;
int lowestY = (y1 > y) ? y : y1;

int highestX = (x1 > x) ? x1 : x;
int highestY = (y1 > y) ? y1 : y;

int sum = 0;

for (int i = lowestX; i < highestX; i++)
{
for (int j = lowestY; j < highestY; j++)
{
sum += arrayM[i, j];
}
}

return sum;
}

关于c# - 二维数组中选定元素的总和(盒子形状?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526711/

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