我正处于问题的中间。这个问题在于阅读一张有着" bug"的国际象棋表,我必须提出一个解决方案来找到好的国际象棋方块。
表:
本练习的目的是运行表格的所有方块并计算我能找到多少好的国际象棋方块。然后我必须打印最大的区域。
输入示例:
8 8
.#.###.#
#.#.##.#
.#.#..#.
.#.#.#.#
.##.#.#.
#..#.##.
...#...#
#.#.#.#.
输出示例:
12 (Squares can be formed) 4 (biggest area that can be formed)
好广场:
有许多方法可以做到这一点,比如动态编程,但我还是新手,所以我使用完整搜索找到所有这些方块。我需要帮助。
我的代码:
#include <iostream>
using namespace std;
int main()
{
int L,C,j,i;
int c;
cin >> L >> C;
char tab[L+1][C+1];
for(int a=0;a<L;a++)
for(int b=0;b<C;b++)
cin >> tab[a][b];
for(int y=0;y<=L;y++)
{
for(int x=0;x<L;x++)
{
for(int y2=y;y2<L;y2++)
{
for(int x2=x;x2<L;x2++)
{
for(int i=y;i<y2;i++)
{
for( j=x;j<x2;j++)
{
// Compare Positions
}
// If all correct, then square?
}
}
}
}
}
return 0;
}
我的解决方案是O(N ^ 6),但我不确定它是否正确,我已经花了好几个小时试图找到正确的搜索。我在想什么?