问题遇到的现象和发生背景 (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语言运行起来