只有80分,我不理解,急急急
查看原帖
只有80分,我不理解,急急急
866969
telankesi楼主2022/12/4 09:54
#include <stdio.h>
int n, m;
int num;
char s[200][200];
int  count;
void lie(int x, int y, int k);
void hang(int x, int y, int k);
int main()
{
   
    scanf("%d %d", &n, &m);
   
    scanf("%d", &num);
  
    for (int i = 0; i < n; i++) {
        scanf("%s", s[i]);
    }
    if (n == 1 && m == 1 && s[0][0] == '.')printf("1");
    else {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j + num - 1 < m; j++) {
                hang(i, j, 0);
            }
        }
        for (int j = 0; j < m; j++) {
            for (int i = 0; i + num - 1 < n; i++) {
                lie(i, j, 0);
            }
        }

        printf("%d", count);
    }
    return 0;
}
void hang(int x,int y,int k) {
    if (s[x][y] == '.')k++;
    else return;
    if (k == num)count++;
    else  {
        if (y + 1 < m)hang(x, y + 1, k );
    }
   
}
void lie(int x, int y, int k) {
    if (s[x][y] == '.')k++;
    else return;
    if (k == num) {
        count++;
    }
   
        else {
            if (x + 1 < n)
                lie(x+1, y , k );
        }
    
}
2022/12/4 09:54
加载中...