中易网

各位大师帮我看看ACM水题,Java做的,老是RE

答案:1  悬赏:60  
解决时间 2021-01-11 16:17
  • 提问者网友:暗中人
  • 2021-01-11 03:01
各位大师帮我看看ACM水题,Java做的,老是RE
最佳答案
  • 二级知识专家网友:人類模型
  • 2021-01-11 03:52
import java.io.*;
import java.util.*;
public class Main {
public static boolean equation(int x1,int y1,int x2,int y2,int x,int y){
//任意选取两个点,形成一条直线,判断x,y点是否在这条直线上
if ((y-y1)*(x2-x1) == (y2-y1)*(x-x1)) return true;
else return false;
}
public static void main(String[] args) throws Exception{
Scanner cin = new Scanner(System.in);
while(true)
{
int length=cin.nextInt();
if(length==0) break;
int x[]=new int[length];
int y[]=new int[length];
for(int q=0;q x[q]=cin.nextInt();
y[q]=cin.nextInt();
}
if(length==2){
System.out.println(2);
}
else if(length>2&&length<700){
int n=length-2;
int jishu=(n+2)*(n-1)/2+n+2;
int count[]=new int[jishu];
for(int a=0;a count[a]=2;
}
int index=0;
for(int i=0;i for(int j=i+1;j for(int m=0;m if(m!=i&&m!=j){
if(equation(x[i],y[i],x[j],y[j],x[m],y[m])==true){
count[index]++;
}
}
}
index++;
}
}
int max=count[0];
for(int ha=1;ha if(count[ha]>max){
max=count[ha];
}
}
System.out.println(max);
}
}
}
}追问首先真的很谢谢你的回答,其次了,我还有几个问题想要问你一下
1、我的这个程序到底是由于什么原因RE的?
2、你的程序里面有句while(true),这句里面的true我读不懂,能解释一下吗?
3、我在测试你的程序的时候,在结果输出来之后还可以输入一次,即0,可是程序里面的输入在坐标数组定义好之后就没了,怎么还可以再输入一次呢?追答1. RE的原因有很多,其中不按输入格式来就是其中一个原因
2. while(true) 仅仅是个无限循环,因为测试数据有多组,以N=0为终结,所以当N==0的时候跳出循环
3. 多组数据,以N=0结束,在遇到N=0之前都必须继续读取数据
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息