Java 打印具有1和0的4 x 5电路板的所有配置,不在一行或对角线上打印三个1,同时填充尽可能多的1
显然,生产2^20种可能的配置并从中消除并不理想。我曾经考虑过从动态规划的一角来构建问题,但是在保存所有可能的配置时遇到了麻烦。任何帮助都将不胜感激 你真的不必担心内存不足。您可以将一块单板位打包到一个int中。所有可能使用的板的内存总量大约为5MB。所以你不应该有任何问题,只是粗暴地强迫问题 记住那句格言:先使用暴力,然后再变得聪明 因此,您要做的是访问各种位:Java 打印具有1和0的4 x 5电路板的所有配置,不在一行或对角线上打印三个1,同时填充尽可能多的1,java,algorithm,Java,Algorithm,显然,生产2^20种可能的配置并从中消除并不理想。我曾经考虑过从动态规划的一角来构建问题,但是在保存所有可能的配置时遇到了麻烦。任何帮助都将不胜感激 你真的不必担心内存不足。您可以将一块单板位打包到一个int中。所有可能使用的板的内存总量大约为5MB。所以你不应该有任何问题,只是粗暴地强迫问题 记住那句格言:先使用暴力,然后再变得聪明 因此,您要做的是访问各种位: read_bit(int bit) { return (bitpack >> bit) & 0x01; }
read_bit(int bit) {
return (bitpack >> bit) & 0x01;
}
write_bit(int bit, int value) {
bitpack = (bitpack) | ((value & 0x01) << bit);
}
我有一个类似的方法,我最后做的是从左上角开始,然后从左上角开始,每个方向都有一个递归函数,这仍然会留下一些重复项,但是速度要快得多。你到底是什么意思,在保存所有可能的数据时遇到困难?到目前为止你有没有尝试过任何东西?你能详细说明一下位包技术吗?@harshwinter69我在上面列出了一些你可以使用的东西。要从2d实际索引,请执行x*行大小+y之类的操作