最大的Square Finder调试

时间:2017-07-19 11:22:24

标签: c

我正在使用算法从作为我程序输入的文本文件中找到最大的方块。我测试过;我的程序在每行之后接收到带有换行符的正确字符串,并且它正在接收标记“完整”点的正确字符。它正在接收正确的列数和行数。

我的函数,显示在这里,应该是一个二维整数数组,填充类似扫雷的算法。目标是能够选择阵列中的任何位置,并知道在其上方和左侧区域中有多少“完整”点。

这是我的功能:

int **makearray(char *str, char full, int rowcount, int colcount){
    int i;
    int j;
    int **intarray;
    int *column;
    int spot;

    intarray = (int **) malloc(sizeof(int *) * rowcount);
    i = 0;
    while (i < rowcount) {
        j = 0;
        column = (int *) malloc(sizeof(int) * (colcount));
        intarray[i] = column;
        while (j < (colcount + 1)) {
            spot = i + (j * (colcount + 1));
            intarray[i][j] = 0;
            if (str[spot] == full)
                intarray[i][j] = 1;
            if (i == 0 && (j != 0))
                intarray[i][j] += intarray[i][j - 1];
            else if (i != 0 && (j != 0))
                intarray[i][j] += (intarray[i][j - 1] + intarray[i - 1][j]
                        - intarray[i - 1][j - 1]);
            else if (i != 0 && (j == 0))
                intarray[i][j] += intarray[i - 1][j];
            j++;
        }
        i++;
    }
    return (intarray);
}

以下是我提供的输入:

.o...o....................o.o..............o....o..
...o..o..................o.........o..o....o.......
...o...........o...................o........o......
.........................oo...........oo.......o...
..o...........................o.......o............
o....o.....o....o....o.........o.........o.........
....................................o.....oo.o.....
.....o..o..........o..........o....................
..............o.o.......o..o......o................
.................o..o...........o...o..............
o.................oo............oo.................
...o...oo....................oo..o......o....o....o
...o......o.........o..o.....................oo....
.........oo......o............................o....
......o....o................o.....................o
......................................o..oo.......o
....................o..o........o.....o.o..........
...o.o..o..o.......o.....................o......o..
...o..........o.......o................o........o..
...........o......................o.oo....o....o.o.
.o......o...o......................o.......o.......
........................o......oo............oo....
..o.....o..........................................

这应该把它变成一个在最后位置有116的数组;但是,当我测试它时,最后一个点是持有48.逻辑是从这个堆栈溢出的帖子获得的:Most efficient algorithm to find the biggest square in a two dimension map

你能帮我找到这个错误吗?

0 个答案:

没有答案