返回信息流先粘贴上我的结题代码。
-------------------------------------------------------
#include <iostream>
#include <vector>
#include <string>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
bool isLine(double x0, double y0, double x1, double y1, double x2, double y2) {
return fabs(x0 * y1 - x1 * y0 + x1 * y2 - x2 * y1 + x2 * y0 - x0 * y2) <= 1e-6;
}
bool locate(vector<double>& x, vector<double>& y, double val_x, double val_y) {
if(x.size() < 2)
return false;
int n = x.size();
for(int i = 0; i < n - 1; i++)
for(int j = i + 1; j < n; j++) {
if(isLine(x[i], y[i], x[j], y[j], val_x, val_y))
return true;
}
return false;
}
int main() {
int t;
scanf("%d", &t);
vector<string> res;
while(t--) {
int n;
scanf("%d", &n);
vector<double> x, y;
double val_x, val_y;
bool is_line = false;
while(n--) {
scanf("%lf%lf", &val_x, &val_y);
if(locate(x, y, val_x, val_y)) {
is_line = true;
//break; //非常奇怪的地方再这里,如果不注释掉它,那么就会出现Wrong Answer
}
x.push_back(val_x);
y.push_back(val_y);
}
if(is_line)
res.push_back("Yes");
else
res.push_back("No");
}
for(int i = 0; i < res.size(); i++)
cout<<res[i]<<endl;
return 0;
}
-------------------------------------------------------------------
第一个函数是判定三个点是否共线,就是高中判定三点共线的公式。
第二个函数是判定已经给定的点列,其中是否存在某点与其中两点是否存在共线关系(暴力双循环法)。
上面注释的那一行break如果不注释掉,就会出错,但是想了很久,也尝试了很久,都无法理解这究竟是怎么回事(表示不是break的锅,尝试过不写break的等价写法,也是出现这种情况)。
求帮忙看看问题是在哪里呢,我的代码应该比较好读吧,不需要太多的注释了。
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88972同步于 2016/3/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
Online Judge 85: 神秘的Bug,求解惑!
liuyaqiu
2016/3/2镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
但是从完全不能理解是怎么回事儿,显然跳出循环后执行的是对is_line判定,那么直接看上去是跳不跳出都不影响结果,因为is_line是被置为true了。关键是无法的得到OJ的测试数据,所以也无法判定是什么地方引起了错误。
【 在 CAPITAL 的大作中提到: 】
: 看起来这有多组数据,要是break的话当前这组case的输入就读不完整,会影响下一组的读入。
对于单组数据是没有问题的,但是如果是多组数据的话,从第二组开始的读入整个会乱掉(如果第一组还有一些x, y没读的话)。
【 在 liuyaqiu 的大作中提到: 】
: 但是从完全不能理解是怎么回事儿,显然跳出循环后执行的是对is_line判定,那么直接看上去是跳不跳出都不影响结果,因为is_line是被置为true了。关键是无法的得到OJ的测试数据,所以也无法判定是什么地方引起了错误。
翁教私信我给个你的邮箱求暑期实习内推。给你发私信说你邮箱已满。
【 在 CAPITAL 的大作中提到: 】
: 对于单组数据是没有问题的,但是如果是多组数据的话,从第二组开始的读入整个会乱掉(如果第一组还有一些x, y没读的话)。
: