巧克力
时间限制:1秒 内存限制:256M
【题目描述】
小H生日时父亲送给他一块大大的巧克力饼,巧克力饼由\(n\)行\(m\)列的小方格组成,每个小方块要么是黑色,要么是白色。然而,小H并不喜欢白巧克力,只想吃黑色方格。因此在他开始享用之前,会对巧克力进行切割。他将在巧克力的行与行之间、列与列之间进行若干次垂直或水平切割。垂直切割从巧克力的上边缘一直切到下边缘,水平切割则从左边缘一直切到右边缘。完成切割后,小H会得到若干块矩形巧克力片。
由于小H只吃巧克力中的黑色部分,他希望将黑色方格与白色方格完全分离开。这意味着,切出的每一块必须完全由黑色巧克力组成,或者完全由白色巧克力组成。
小H不愿意把时间浪费在切割上,因此他请你帮助确定,为了将黑色方格与白色方格分离,所需的最少切割次数。
【输入格式】
第一行包含两个自然数\(n\)和\(m(1≤n,m≤200)\),分别表示巧克力的行数和列数。接下来的\(n\)行,每行包含\(m\)个字符,每个字符为0或1。字符0表示白色方格,1表示黑色方格。
【输出格式】
输出一行一个整数,表示将黑色方格与白色方格分离所需的最少切割次数。
【输入输出样例1】
Input
4 7
0000000
0111000
0111100
0000000
Output
6
【样例1说明】
最少次数的切割方案如下:
【输入输出样例2】
Input
4 5
00000
01100
01100
00000
Output
4
【样例2说明】
小H应在第1行与第2行之间、第3行与第4行之间、第1列与第2列之间、第3列与第4列之间各切一刀。
【输入输出样例3】
Input
4 4
0101
1010
0101
1010
Output
6
【样例2说明】
小H应在每两行之间和每两列之间都切一刀,总共6刀。
【测试点性质】
【来源】
Mr.he