c/c++中位与运算&代替取模运算% 取模运算所需的时间大约是位与运算的十倍。 当模的大小是2的N次方时,可用位与运算代替取模运算: unsigned int modNum = 1024; // 2的N次方unsigned int x = 4321;unsigned int a = x % modNum;unsigned int b = x & (modNum - 1); 以上,
如评论中所述,此问题可以减少到 Dijkstra. 该解决方案背后的关键概念是将图像表示为图形,然后使用最短路径算法的预制实现. 首先,观察大小为4×4的图像的天真表示: T F F T T T F T F T T F T T T T 其中T是白点,F是黑点.在这种情况下,路径是相邻白点之间的一组移动. 假设图形是一组节点{1,2,…,16},我们可以将每个点(i,j)映射到数字i * 4 j.