我有一个长方形的房间;它的地板上铺着地板,有些地板坏了。
房间的尺寸为N和M:1 <=N,M<=300。
我从 stdin
中读取了 N 和 M,然后读取了 N 个长度为 M 的字符串,如下所示:
..**.***....*.**...**.***
.**......**...***..***...
等等,其中 .
是好的地板,*
是坏的。
我打算把坏掉的地板换成新的,我只有两种:两 block 一 block 的和一 block 一 block 的。我不能把一对一的剪成两个一对一的。
为了找到一种方法来做到这一点,我把地板涂成棋盘状,这样一来二去的破损的两半就有不同的颜色。
然后我的意思是从结果矩阵构建一个二分图(由白色和黑色部分组成),我想用 this code 构建和分析它.
最好的方法是什么? 我认为我不应该将所有矩阵都保存在内存中(因为它可能相当大)。理想情况下,我应该能够读取字符串并在运行时更新图形。
编辑: 我的代码应该是这样的:
int main()
{
int N, M;
std::cin >> N;
assert (( N >=1) && (N <=300));
std::cin >> M;
assert (( M >=1) && (M <=300));
for (int i = 0; i < N; ++i)
std::cin >> // that's where I have to read the string
//...and the next string
// use these 2 strings to update a graph
// with prGraph.AddEdge()
return 0;
}
最佳答案
如果不将整个矩阵存储在内存中真的如此重要,您可以逐行读取它并仅存储当前行和上一行,因为这足以正确构建图形。
关于c++ - 读入矩阵并构建图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324226/