Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Graph Coloring - Fatal编程技术网

Java 图着色所有可能解,特例

Java 图着色所有可能解,特例,java,arrays,graph-coloring,Java,Arrays,Graph Coloring,我试图解决一个问题,我有一个网格。说(3xn)。使用3颜色。我想知道所有可能的解决方案的数量。网格的相邻单元格可以具有相同的颜色。唯一的限制是: 没有一行或一列可以有相同颜色的所有单元格。 如何最好地解决atmost大约25000列的问题 我解决了一个问题,相邻的细胞不应该有相同的颜色。对于3行2列,给出了54个解决方案。 我刚刚修改了代码 只需检查边缘情况 例如,底端: boolean isBottomOk(int r, int c, int n) { if(r == numberO

我试图解决一个问题,我有一个网格。说
(3xn)
。使用3颜色。我想知道所有可能的解决方案的数量。网格的相邻单元格可以具有相同的颜色。唯一的限制是:

没有一行或一列可以有相同颜色的所有单元格。


如何最好地解决atmost大约25000列的问题

我解决了一个问题,相邻的细胞不应该有相同的颜色。对于3行2列,给出了54个解决方案。 我刚刚修改了代码 只需检查边缘情况

例如,底端:

boolean isBottomOk(int r, int c, int n)  {
    if(r == numberOfRows - 1) return true;
    if(grid[r + 1][c] != n) return true;
    return false;
}
最后像这样解决它:

 void solve(int r, int c)
    {
        for(int i = 1; i <= numberOfColors; i++)
        {   
            if(valid(r, c, i))
            {
                grid[r][c] = i;
                if(r == numberOfRows - 1 && c == numberOfColumns - 1) 
                {
                    printBoard();
                    numberOfCombinations++;
                }
                else if(r == numberOfRows - 1) solve(0, c + 1);
                else solve(r + 1, c);
            }
        }
        grid[r][c] = 0;
    }

    boolean valid(int r, int c, int n)
    {
        return(isLeftOk(r, c, n) && isRightOk(r, c, n) &&  isTopOk(r, c, n) &&  isBottomOk(r, c, n));
    }

void solve(int r,int c)
{

对于(int i=1;i for
n=2
,解决方案计数
54
似乎太小。如果我强制执行所有可能的状态,我会得到
174
解决方案(请参阅,使用
0
编码颜色,
1
2
)。此外,解决方案的数量呈指数增长,因此我预计64位解决方案计数器会很快溢出(在达到
n=25000
之前)。因此我想知道您打算如何处理这种情况(.e.g使用
biginger
?)。我认为如果您详细说明您给出的
54
解决方案,以及您打算为解决方案计数器使用的数据类型,将会有所帮助。对于
n=2
,解决方案计数
54
似乎太小。如果我强制所有可能的状态,我将得到
174
解决方案(请参阅,使用
0
1
2
)对颜色进行编码。此外,解决方案的数量呈指数增长,因此我预计64位解决方案计数器会很快溢出(远早于达到
n=25000
)(例如使用
biginger
?)。如果您能详细说明您给出的
54
解决方案,以及您打算将什么数据类型用于解决方案计数器,我认为这会很有帮助。