【问题描述】
Neo喜欢玩CS(有名的网络游戏),他最喜欢用的武器是AWP(一种狙击枪,威力极大)。
这天,Neo在一个空旷的地图上,拿起心爱的AWP练习枪法。Neo的CS版本很特别,他用AWP一枪能够击穿无限多机器人。他调出很多很多的机器人,并把他们设置为静止,然后开始练枪。这时,他突然想知道究竟一枪能最多同时击中多少个机器人。请你写一个程序,帮Neo解决这个问题。
为了简单起见,每个机器人在地图上用一个点来表示,任意两个机器人的位置都不相同。
地图很空旷,没有障碍物。当然,AWP的子弹轨迹是一条直线。
输入格式
输入文件的第一行为机器人的数目N(1<=N<=1000)
接下来有N行,每行有2个整数Xi和Yi(-2 000 000 000<=Xi,Yi<=2 000 000 000),表示第i个机器人在地图中的行、列坐标。
Input.txt
5
0 0
1 1
2 2
0 3
2 3
输出格式
输出文件只有一个整数,就是Neo一枪最多能击中的机器人数目。
Output.txt
3
//AWP
#include"stdio.h"
void main()
{
int i=0,j,Xi,Yi,N,a[100][100]={0},max=0,m=0,ii;
printf("please input N:");//N表示总的机器人数
scanf("%d",&N);
while(i<N)
{
i++;
scanf("%d %d",&Xi,&Yi);
if(Xi<=100&&Xi>=0&&Yi>=0&&Yi<=100)
a[Xi][Yi]=1;
}
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
if(a[j]==1)
m++;
if(max<m)
max=m;
m=0;
}
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
if(a[j]==1)
m++;
if(max<m)
max=m;
m=0;
}
for(i=99;i>=0;i--)
{
ii=i;
for(j=99;j>=i;j--)
{
if(a[j]==1)
{
i--;
m++;
}
else
i--;
}
if(max<m)
max=m;
m=0;
i=ii;
}
for(i=99;i>=0;i--)
{
ii=i;
for(j=0;j<=i;j++)
{
if(a[j]==1)
{
i--;
m++;
}
else
i--;
}
if(max<m)
max=m;
m=0;
i=ii;
}
printf("%d",max);
}为什么没结果呢?希望高手指点 |