首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言编程:WOJ第1087题“数星星”,明明答案正确却不能AC,该如何处理

2013-01-26 
C语言编程:WOJ第1087题“数星星”,明明答案正确却不能AC题目连接:http://acm.whu.edu.cn/learn/problem/deta

C语言编程:WOJ第1087题“数星星”,明明答案正确却不能AC
题目连接:http://acm.whu.edu.cn/learn/problem/detail?problem_id=1087,就是找最多的共线点数目
    以下是我的代码,用的是暴力枚举,但是提交一直显示WRONG ANSWER。。。时间、内存都符合要求,我查不出来错误。。。求大神指教!
 #include<stdio.h>
 #include<stdlib.h>
 #include<math.h>
 int main(){
     float star[300][2];   // 星星坐标 
     int n;
     int i = 0;
     scanf("%d",&n);
     while(i<n){
       scanf("%f",&star[i][0]);
       scanf("%f",&star[i][1]);
       i++;
       }
     int max = 0;
     int tmp;
     for(i=0; i<n; i++){
       for(int j=i; j<n; j++){    // 无需从 j=i+1 开始,因为端点也计入直线上 
               tmp = 0;
          for(int k=0; k<n; k++){
          //if(k!=i && k!=j){   // 无需排除直线两个端点,因为端点也计入直线上 
                    if((star[i][0]==star[j][0] && star[j][0]==star[k][0])||(star[i][1]==star[j][1] && star[j][1]==star[k][1]))   // 坐标中出现斜率为0或者无限大情况 
                    tmp++; 
                      else if(atan2(star[k][0]-star[j][0],star[k][1]-star[j][1]) == atan2(star[k][0]-star[i][0],star[k][1]-star[i][1]))
                      tmp++;
                  }
          //}
       if(max<tmp) max=tmp;
       }
     }
     printf("%d\n",max); 
     return 0;
 }     
 
[解决办法]
输入包含多组数据
[解决办法]
不符合第二条InPut的要求。

热点排行