最佳直线(oj题)

2024-01-03 09:55:41

期末考终于结束了,寒假的第一天,先回顾一下我的程设期末考吧

拉了,变菜了

有点难受,第三题被拖了一个多小时,导致最后一题根本没时间做

上面就是第三题

至于原因嘛,我感觉是因为我完全没有打草稿,想到什么写什么,对于一些不用动脑子的题就可以很快写出来了,对于这种数学题,还要防备可能出现的情况,比如除数为零啥的

以后得养成做题的时候打草稿的习惯了

代码如下:

#include <stdio.h>
#include <math.h>
 
int getnum(int a, int b);
struct martix {
    int x;
    int y;
} map[300];
int N, maxn, S0 = 300, S1 = 300;
 
int main(void) {
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
        scanf("%d%d", &map[i].x, &map[i].y);
    for (int i = 0; i < N - 1; i++)
        for (int j = i + 1; j < N; j++) {
            int len = 2;
            int k_x = map[j].x - map[i].x;
            int k_y = map[j].y - map[i].y;
            int tmp = getnum(k_x, k_y);
            if (!k_x && !k_y)
                ;
            else if (!k_x)
                k_y = 1;
            else if (!k_y)
                k_x = 1;
            k_x /= tmp, k_y /= tmp;
            for (int k = j + 1; k < N; k++) {
                int tmp_x = map[k].x - map[i].x;
                int tmp_y = map[k].y - map[i].y;
                tmp = getnum(tmp_x, tmp_y);
                if (!tmp_x && !tmp_y)
                    ;
                else if (!tmp_x)
                    tmp_y = 1;
                else if (!k_y)
                    tmp_x = 1;
                tmp_x /= tmp, tmp_y /= tmp;
                if (tmp_x == k_x && tmp_y == k_y) {
                    len++;
                    continue;
                }
                tmp_x *= -1, tmp_y *= -1;
                if (tmp_x == k_x && tmp_y == k_y) {
                    len++;
                    continue;
                }
            }
            if (maxn < len) {
                maxn = len;
                S0 = i;
                S1 = j;
            }
        }
    printf("%d %d", S0, S1);
 
    return 0;
}
 
int getnum(int a, int b) {
    if (!a || !b)
        return 1;
    int n = 1;
    a = abs(a), b = abs(b);
    for (int i = (a < b) ? a : b; i >= 1; i--)
        if (a % i == 0 && b % i == 0) {
            n = i;
            break;
        }
    return n;
}

话说,dev-C++这个b会自动把我的格式改掉,有点烦

文章来源:https://blog.csdn.net/Fool256353/article/details/135354044
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。