#include <stdio.h>
int getnum(int x, int y);
void dfs(int x, int y);
int map[10][10] =
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,1,0,0,1,0,0,0,1},
{1,0,0,0,1,1,0,3,0,1},
{1,0,0,0,0,1,0,0,0,1},
{1,3,0,0,3,1,0,3,0,1},
{1,3,1,0,0,3,3,1,1,1},
{1,0,3,3,0,0,0,3,3,1},
{1,1,0,0,3,0,0,0,3,1},
{1,0,0,1,3,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1}
};
typedef struct {
int x;
int y;
}Note;
int manipulate[4][2] =
{
{0,1},
{1,0},
{0,-1},
{-1,0}
};
int book[10][10] = { 0 };
int killing;
int max = 0;
int mx, my;
int main()
{
dfs(1, 1);
printf("%d from %d,%d", max, mx, my);
}
void dfs(int x,int y)
{
if (1 == book[x][y] || 1 == map[x][y])
{
return;
}
book[x][y] = 1;
killing = getnum(x, y);
if (killing > max)
{
max = killing;
mx = x;
my = y;
}
int i;
int tx, ty;
for (i = 0; i < 4; i++)
{
tx = x + manipulate[i][0];
ty = y + manipulate[i][1];
dfs(tx, ty);
}
}
int getnum(int x, int y)
{
int sum=0;
int i = x;
while (map[i][y] != 1)
{
if (3 == map[i][y])
{
sum++;
}
i++;
}
i = x;
while (map[i][y] != 1)
{
if (3 == map[i][y])
{
sum++;
}
i--;
}
int j = y;
while (map[x][j] != 1)
{
if (3 == map[x][j])
sum++;
j++;
}
j = y;
while (map[x][j] != 1)
{
if (3 == map[x][j])
sum++;
j--;
}
return sum;
}
能够出结果,但是结果似乎不对,不知到是哪里出了问题
你能描述下问题具体是要输出什么吗