求助,这不是应该暴力枚举的吗?怎么TLE了?
查看原帖
求助,这不是应该暴力枚举的吗?怎么TLE了?
482138
ProgrammerVic楼主2022/1/24 15:21

这不是在“暴力枚举”题单里面吗?怎么暴力枚举就TLE了?

/*
思路:
假如这是一个方格:
 A点↓
    |``````````````````````|
    |                      |
    |                      |
    |                      |
    |                      |
    |                      |
    |                      |
    |______________________|
                        B点↑
将A点作为起始点,B点作为结束点的方形是一个正方形。
*/

#include <iostream>

using namespace std;

struct point {  // 结构体“点”
    int x, y;
};

bool isSquare(point start, point end) {  // 判断是否为正方形
    return end.x - start.x == end.y - start.y;
}

int main() {
    int l, w;
    long long squares = 0, rectangles = 0;
    point a, b;
    cin >> l >> w;  // l是长度,w是宽度
    for (int i = 0; i < l; i++) {  // i是A点的x坐标
        for (int j = 0; j < w; j++) {  // j是A点的y坐标
            for (int k = 0; k <= l; k++) {  // k是B点的x坐标
                for (int n = 0; n <= w; n++) {  // n是B点的y坐标(因为l被占用了,所以用n)
                    if (k > i and n > j) {  // 作为结束点的B点,x和y坐标都要比作为起始点的A点大
                        a.x = i;
                        a.y = j;
                        b.x = k;
                        b.y = n;
                        if (isSquare(a, b)) {
                            squares++;
                        }
                        else {
                            rectangles++;
                        }
                    }
                }
            }
        }
    }
    printf("%lld %lld\n", squares, rectangles);
    return 0;
}
2022/1/24 15:21
加载中...