大佬们求救!!(c)
查看原帖
大佬们求救!!(c)
1148612
yunqingyu楼主2023/11/26 15:30

为什么输入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;
}
2023/11/26 15:30
加载中...