#include <iostream>
#include <fstream>
using namespace std;
#define N 5
int wall1 = -1;
int wall2 = N ;
int area = 0;
void floodfill(int x, int y, char oldcolor, char newcolor, char a[N][N], int area);
int main()
{
int i, j;
char oldcolor;
char newcolor = '0';
ifstream fileIn("picture.txt", ios::in);
char a[N][N];
while (!fileIn.eof())
{
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fileIn >> a[i][j];
}
}
}
cin >> oldcolor;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (a[i][j] == oldcolor)
{
floodfill(i, j, oldcolor, newcolor, a, area);
}
}
}
cout << area;
}
void floodfill(int x, int y, char oldcolor, char newcolor, char a[N][N], int area)
{
if (x == wall1 || x == wall2 || y == wall1 || y == wall2)
{
return;
}
if (a[x][y] != oldcolor)
{
return;
}
a[x][y] = newcolor;
floodfill(x + 1, y, oldcolor, newcolor, a, area);
floodfill(x - 1, y, oldcolor, newcolor, a, area);
floodfill(x, y + 1, oldcolor, newcolor, a, area);
floodfill(x, y - 1, oldcolor, newcolor, a, area);
return;
}
运行后面积始终为零
修改了几次都一直是这个结果
最终目的是想得到字母的中心位置和面积