求助!比赛第一题,总是 WA
  • 板块灌水区
  • 楼主Iamzzr
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/9/24 17:25
  • 上次更新2023/10/27 10:07:43
查看原帖
求助!比赛第一题,总是 WA
527243
Iamzzr楼主2022/9/24 17:25

上午比赛第一题:https://www.luogu.com.cn/problem/P8546

代码:

#include <iostream>

using namespace std;

const int N = 110;

int n;
string s[N];

bool check(int x, int y) {
    if (x <= 0) return false;
    if (x > n) return false;
    if (y <= 0) return false;
    if (y > n) return false;
    if (s[x][y] == '0') return false;
    return true;
}

int find(int i, int j) {
    int num = 0;
    int x = i - 1, y = j - 1;
    int xx = i - 1, yy = j + 1;
    int xxx = i + 1, yyy = j - 1;
    int xxxx = i + 1, yyyy = j + 1;
    while (check(x, y) && check(xx, yy) && check(xxx, yyy) && check(xxxx, yyyy)) {
        num++;
        x--, y--;
        xx--, yy++;
        xxx++, yyy--;
        xxxx++, yyyy++;
    }
    return num;
}

int find1(int i, int j) {
    int num = 0;
    int x = i - 1, y = j - 1;
    int xx = i - 1, yy = j;
    int xxx = i, yyy = j - 1;
    int xxxx = i, yyyy = j;
    while (check(x, y) && check(xx, yy) && check(xxx, yyy) && check(xxxx, yyyy)) {
        num++;
        x--, y--;
        xx--, yy++;
        xxx++, yyy--;
        xxxx++, yyyy++;
    }
    return num;
}

int main() {
    cin >> n;
    getline(cin, s[0]);
    for (int i = 1; i <= n; i++) {
        getline(cin, s[i]);
        s[i] = ' ' + s[i];
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            ans += find(i, j);
            ans += find1(i, j);
        }
    }
    cout << ans << endl;
    return 0;
}

求调/hack /kel

2022/9/24 17:25
加载中...