为什么输入6 6 3 3的输出为10啊?求大佬帮忙看看哪里表达重了QAQ!
#include <stdio.h>
#include <math.h>
typedef struct
{
int x;
int y;
} bin;
int bushu(bin z[100][100], int , int, int ,int);
int main()
{
int n, m, a, b, c;
scanf("%d %d %d %d", &n, &m, &a, &b);
bin z[100][100];
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
z[i][j].x = i;
z[i][j].y = j;
}
}
for (int i = 0; i<=n; i++)
{
for (int j = 0; j<=m; j++)
{
c = (int)pow((z[i][j].x - a), 2) + (int)pow((z[i][j].y - b), 2);
if (c == 5)
{
z[i][j].x = 0;
z[i][j].y = 0;
}
}
}
int nu;
int i = 0, j = 0;
nu = bushu(z, n, m, i, j);
printf("%d", nu);
return 0;
}
int bushu(bin z[100][100], int n, int m,int i, int j)
{
int count = 0;
if (i == n && j == m)
return 1;
else if (i == n && j < m)
{
if (z[i][j+1].x != 0 && z[i][j+1].y != 0)
count += bushu(z, n, m, i, j+1);
}
else if (i < n && j == m)
{
if (z[i+1][j].x != 0 && z[i+1][j].y != 0)
count += bushu(z, n, m, i+1, j);
}
else
{
if ((z[i+1][j].x != 0 || z[i+1][j].y != 0) && (z[i][j+1].x != 0 || z[i][j+1].y != 0))
count += bushu (z, n, m, i+1, j) + bushu(z, n, m, i, j+1);
else if ((z[i+1][j].x != 0 || z[i+1][j].y != 0) && (z[i][j+1].x == 0 && z[i][j+1].y == 0) )
{
count += bushu(z, n, m, i+1, j);
}
else if ((z[i+1][j].x == 0 && z[i+1][j].y == 0) && (z[i][j+1].x != 0 || z[i][j+1].y != 0) )
{
count += bushu(z, n, m, i, j+1);
}
}
return count;
}