WDHK 2022-11-29 19:15 采纳率: 90.5%
浏览 29
已结题

给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。

问题遇到的现象和发生背景 (C语言)

给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h> 
int main() {
struct HashTable {
    int key, val;
    UT_hash_handle hh;
};
int gcd(int a, int b) {
    return b ? gcd(b, a % b) : a;
}
int maxPoints(int** points, int pointsSize, int* pointsColSize) {
    int n = pointsSize;
    if (n <= 2) {
        return n;
    }
    int ret = 0;
    for (int i = 0; i < n; i++) {
        if (ret >= n - i || ret > n / 2) {
            break;
        }
        struct HashTable* hashTable = NULL;
        for (int j = i + 1; j < n; j++) {
            int x = points[i][0] - points[j][0];
            int y = points[i][1] - points[j][1];
            if (x == 0) {
                y = 1;
            }
            else if (y == 0) {
                x = 1;
            }
            else {
                if (y < 0) {
                    x = -x;
                    y = -y;
                }
                int gcdXY = gcd(abs(x), abs(y));
                x /= gcdXY, y /= gcdXY;
            }
            struct HashTable* tmp;
            int val = y + x * 20010;
            HASH_FIND_INT(hashTable, &val, tmp);
            if (tmp == NULL) {
                tmp = malloc(sizeof(struct HashTable));
                tmp->key = val;
                tmp->val = 1;
                HASH_ADD_INT(hashTable, key, tmp);
            }
            else {
                tmp->val++;
            }
        }
        int maxn = 0;
        struct HashTable* iter, * tmp;
        HASH_ITER(hh, hashTable, iter, tmp) {
            maxn = fmax(maxn, iter->val + 1);
            HASH_DEL(hashTable, iter);
            free(iter);
        }
        ret = fmax(ret, maxn);
    }
    return ret;
}
运行结果及报错内容

严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0020 未定义标识符 "y" Project1 D:\Visual StudioGX\Project1\源.c 41
错误(活动) E0020 未定义标识符 "UT_hash_handle" Project1 D:\Visual StudioGX\Project1\源.c 5
错误(活动) E0065 应输入“;” Project1 D:\Visual StudioGX\Project1\源.c 8
错误(活动) E0020 未定义标识符 "x" Project1 D:\Visual StudioGX\Project1\源.c 38
错误(活动) E0020 未定义标识符 "gcdXY" Project1 D:\Visual StudioGX\Project1\源.c 38
错误(活动) E0020 未定义标识符 "y" Project1 D:\Visual StudioGX\Project1\源.c 38
错误(活动) E0028 表达式必须含有常量值 Project1 D:\Visual StudioGX\Project1\源.c 41
错误(活动) E0020 未定义标识符 "x" Project1 D:\Visual StudioGX\Project1\源.c 41
错误(活动) E0028 表达式必须含有常量值 Project1 D:\Visual StudioGX\Project1\源.c 41
错误(活动) E0040 应输入标识符 Project1 D:\Visual StudioGX\Project1\源.c 42
错误(活动) E0169 应输入声明 Project1 D:\Visual StudioGX\Project1\源.c 43
错误(活动) E0020 未定义标识符 "maxn" Project1 D:\Visual StudioGX\Project1\源.c 56
错误(活动) E3364 运算符 -> 或 ->* 应用于 "int" 而不是指针类型 Project1 D:\Visual StudioGX\Project1\源.c 56
错误(活动) E0059 常量表达式中不允许函数调用 Project1 D:\Visual StudioGX\Project1\源.c 60
错误(活动) E0020 未定义标识符 "maxn" Project1 D:\Visual StudioGX\Project1\源.c 60
错误(活动) E0169 应输入声明 Project1 D:\Visual StudioGX\Project1\源.c 61
错误(活动) E0169 应输入声明 Project1 D:\Visual StudioGX\Project1\源.c 63
错误 C2061 语法错误: 标识符“UT_hash_handle” Project1 D:\Visual StudioGX\Project1\源.c 5
警告 C4013 “abs”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 37
警告 C4013 “HASH_FIND_INT”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 42
警告 C4013 “malloc”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 44
错误 C2027 使用了未定义类型“HashTable” Project1 D:\Visual StudioGX\Project1\源.c 44
警告 C4047 “=”:“HashTable *”与“int”的间接级别不同 Project1 D:\Visual StudioGX\Project1\源.c 44
错误 C2037 “key”的左侧部分指定未定义的结构/联合“HashTable” Project1 D:\Visual StudioGX\Project1\源.c 45
错误 C2037 “val”的左侧部分指定未定义的结构/联合“HashTable” Project1 D:\Visual StudioGX\Project1\源.c 46
警告 C4013 “HASH_ADD_INT”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 47
错误 C2065 “key”: 未声明的标识符 Project1 D:\Visual StudioGX\Project1\源.c 47
错误 C2037 “val”的左侧部分指定未定义的结构/联合“HashTable” Project1 D:\Visual StudioGX\Project1\源.c 50
警告 C4013 “HASH_ITER”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 55
错误 C2065 “hh”: 未声明的标识符 Project1 D:\Visual StudioGX\Project1\源.c 55
错误 C2143 语法错误: 缺少“;”(在“{”的前面) Project1 D:\Visual StudioGX\Project1\源.c 55
警告 C4013 “fmax”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 56
错误 C2037 “val”的左侧部分指定未定义的结构/联合“HashTable” Project1 D:\Visual StudioGX\Project1\源.c 56
警告 C4013 “HASH_DEL”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 57
警告 C4013 “free”未定义;假设外部返回 int Project1 D:\Visual StudioGX\Project1\源.c 58

我想要达到的结果

使用C语言运行起来

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月7日
    • 创建了问题 11月29日

    悬赏问题

    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了
    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算
    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据