为了账号安全,请及时绑定邮箱和手机立即绑定

能帮忙把这段C程序改写成java么?

能帮忙把这段C程序改写成java么?

慕粉3942243 2016-10-21 23:11:13
#define _CRT_SECURE_NO_WARNINGS #include <iostream>   #include <cmath>   #include <algorithm>   #define MAXN 100005   using namespace std; struct Point { double x, y; }; struct Point point[MAXN], *px[MAXN], *py[MAXN]; double get_dis(Point *p1, Point *p2) { return sqrt((p1->x - p2->x)*(p1->x - p2->x) + (p1->y - p2->y)*(p1->y - p2->y)); } bool cmpx(Point *p1, Point *p2) { return p1->x<p2->x; } bool cmpy(Point *p1, Point *p2) { return p1->y<p2->y; } double min(double a, double b) { return a<b ? a : b; } //-------核心代码------------//   double closest(int s, int e) { if (s + 1 == e) return get_dis(px[s], px[e]); if (s + 2 == e) return min(get_dis(px[s], px[s + 1]), min(get_dis(px[s + 1], px[e]), get_dis(px[s], px[e]))); int mid = (s + e) >> 1; double ans = min(closest(s, mid), closest(mid + 1, e));//递归求解   int i, j, cnt = 0; for (i = s;i <= e;i++)//把x坐标在px[mid].x-ans~px[mid].x+ans范围内的点取出来   { if (px[i]->x >= px[mid]->x - ans&&px[i]->x <= px[mid]->x + ans) py[cnt++] = px[i]; } sort(py, py + cnt, cmpy);//按y坐标排序   for (i = 0;i<cnt;i++) { for (j = i + 1;j<cnt;j++)//py数组中的点是按照y坐标升序的   { if (py[j]->y - py[i]->y >= ans) break; ans = min(ans, get_dis(py[i], py[j])); } } return ans; } int main() { int i, n; while (scanf("%d", &n) != EOF) { if (n == 0) break; for (i = 0;i<n;i++) { scanf("%lf%lf", &point[i].x, &point[i].y); px[i] = &point[i]; } sort(px, px + n, cmpx); //for(i=0;i<n;i++)   // printf("(%.2lf,%.2lf)--",px[i].x,px[i].y);   double distance = closest(0, n - 1); printf("%.2lf\n", distance / 2); } return 0; }
查看完整描述

3 回答

?
一蓑烟雨任平生01

TA贡献5条经验 获得超0个赞

为什么我觉得这好像不是c是c++吧

查看完整回答
反对 回复 2016-10-22
  • onemoo
    onemoo
    ​吐槽得好! 这确实是C++代码,如果是面向对象的C++代码,改写成Java倒也容易。 可这就是用C++写的C代码啊! 而且,这代码应该会编译不过:头文件用错了,代码中用了C库的scanf,而又没有include stdio.h
  • 一蓑烟雨任平生01
    一蓑烟雨任平生01
    我其实不是吐槽,我也不懂
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

自己先写,遇到问题了再问才是猿问的正确使用方式。

查看完整回答
反对 回复 2016-10-22
  • 3 回答
  • 0 关注
  • 1589 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信