简单题,直接模拟即可

#include <iostream>
#include 
<cmath>

const int MAXN = 151;
int tx, ty, n, i, j, k, max, x[MAXN], y[MAXN];
float r, d;

float dist(int i)
{
    
return sqrt((x[i] - tx) * (x[i] - tx) + (y[i] - ty) * (y[i] - ty));
}


bool insc(int i, int j)
{
    
if ((tx - x[i]) * (ty - y[j]) - (tx - x[j]) * (ty - y[i]) >= 0return true;
    
else return false;
}


int main()
{
    
while (scanf("%d%d%f"&tx, &ty, &r), r > 0)
    
{
        scanf(
"%d"&n);
        j 
= 0;
        
for (i = 1; i <= n; i++)
        
{
            scanf(
"%d%d"&x[0], &y[0]);
            d 
= dist(0);
            
if (d <= r) {
                j
++;
                x[j] 
= x[0];
                y[j] 
= y[0];
            }

        }

        n 
= j;
        max 
= 0;
        
for (i = 1; i <= n; i++)
        
{
            k 
= 0;
            
for (j = 1; j <= n; j++if (insc(i, j)) k++;
            max 
>?= k;
        }

        printf(
"%d\n", max);
    }

    
return 0;
}
posted on 2007-08-21 14:35 Felicia 阅读(314) 评论(0)  编辑 收藏 引用 所属分类: 计算几何

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理