老师上课讲了一次,然后自己觉得自己好像懂了
结果代码看似差不多地写出来了,然而,就是一个else,就差了十万八千里啊!!!
#include<iostream>
using namespace std;
int n;
int mm;
char ch[100];
int chose(int x);
void DFS(int x, int count);
int main()
{
int i = 0;
while (cin >> n && n != 0)
{
mm = 0;
for (i = 0; i < n*n; i++)
{
cin >> ch[i];
}
DFS(0, 0);
cout << mm << endl;
}
return 0;
}
void DFS(int x, int count)
{
if (x == n*n)
{
if (mm < count)
mm = count;
return;
}
else
{
if (chose(x))
{
ch[x] = '@';
DFS(x + 1, count + 1);
ch[x] = '.';
} //就是这里多加了一个else,然后整个想法都跑偏了!!!
DFS(x + 1, count);
}
}
int chose(int x)
{
int m = x;
if (ch[m] == 'X' || ch[m] == '@')
return 0;
for (m = x; m >= 0; m = m - n)
{
if (ch[m] == 'X')
break;
if (ch[m] == '@')
return 0;
}
for (m = x; m >= (x / n)*n; m--)
{
if (ch[m] == 'X')
return 1;
if (ch[m] == '@')
return 0;
}
return 1;
}
以及总是说我编译错误
max不能随便用来当变量名称
省得引起歧义。。