同样的错误,同问
by AFOier @ 2017-01-23 14:16:25
题目说的是穿过圆的边界,因此除了要判断起点或终点是否在圆内,而且还要判断剩下的一点是否在圆外,如果在圆外则说明穿过边界,如果两点均在圆内则无法穿过圆的边界,就不用累加该圆。
by a155936453 @ 2017-02-02 08:47:59
@[a155936453](/space/show?uid=21212) 为啥我改了之后还不行?
by Wh_Xcjm @ 2017-02-21 20:42:17
@[a155936453](/space/show?uid=21212) ???
by Wh_Xcjm @ 2017-02-21 20:43:12
原来是第六个点出错,改完后第三个点又错了
```cpp
#include<bits/stdc++.h>
using namespace std;
long long int x[55],y[55],r[55],s=0,n,i,x1,x2,y1,y2;
int main()
{
cin>>n;
for(i=0;i<n;i++)
cin>>x[i];
for(i=0;i<n;i++)
cin>>y[i];
for(i=0;i<n;i++)
cin>>r[i];
cin>>x1>>y1>>x2>>y2;
for(i=0;i<n;i++)
{
if((<=r[i]*r[i])!=
(jl<=r[i]*r[i]))
s++;
}
cout<<s;
return 0;
}
怎么改?@[a155936453](/space/show?uid=21212) ???
```
by Wh_Xcjm @ 2017-02-22 18:03:29
我的判断和你的判断不同,我的是用x1,x2,y1,y2去和每一个圆的坐标进行判断,如果一个坐标在圆内,并且另外一个坐标在圆外则说明曲线一定穿过该圆,如果两个坐标都在圆内或都在圆外,则不通过该圆。
附上代码:
```cpp
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
int n,tot;
struct nod{
int x,y,z;
}f[2001];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>f[i].x;
for(int i=1;i<=n;i++)
cin>>f[i].y;
for(int i=1;i<=n;i++)
cin>>f[i].z;
int xx,yy,xx1,yy1;
cin>>xx>>yy>>xx1>>yy1;
for(int i=1;i<=n;i++)//判断
{
int l=(xx-f[i].x)*(xx-f[i].x),ll=(yy-f[i].y)*(yy-f[i].y);
int k=(xx1-f[i].x)*(xx1-f[i].x),kk=(yy1-f[i].y)*(yy1-f[i].y);
if(l+ll<=f[i].z*f[i].z&&k+kk>f[i].z*f[i].z)
tot++;
if(k+kk<=f[i].z*f[i].z&&l+ll>f[i].z*f[i].z)
tot++;
}
cout<<tot;
return 0;
}
```
by a155936453 @ 2017-02-25 08:46:08
so?
by 郑涵希 @ 2018-07-05 14:33:03
@[牵丝戏](/space/show?uid=35221) 你好像可以删除的
by Linune_Gump @ 2019-07-26 20:20:57
@[a155936453](/space/show?uid=21212) 恍然大悟【笑哭】
by Linune_Gump @ 2019-07-26 20:24:38
@[a155936453](/space/show?uid=21212) 感谢大佬,现在对了
by 山竹 @ 2019-10-15 08:45:52