一道应用题目的求解,请各位指点更为简便的方法
已知条件:struct point
{
float x;
float y;
}point1;
输入N个二维数字(x,y);在二维坐标下划分了3*5个区域(1-15),区域在x坐标和y坐标都从零开始,间隔为2,求落在这15个区域内点数最多的区域和落在这15个区域内点数最多的区域最多的点数。
例如:输入N:7
输入N个二维数字x和y:
3,3
2.5,3.5
3.1,2.8
3.1,3.1
7,3
2.6,3.6
9,5
得出结果如下:
点数最多的区域是:7,max=5
以下是我的方法:
程序代码:#include<stdio.h>
struct point
{
float x;
float y;
}point1;
main()
{
int i,j,n,N,max=0,row,colum,a[6][10];
int b[3][5]={{11,12,13,14,15},{6,7,8,9,10},{1,2,3,4,5}};
/*初始化*/
for(i=0;i<6;i=i+2)
{
for(j=0;j<10;j=j+2)
{
a[i][j]=0;
}
}
/*输入N个数*/
printf("输入N:\n");
scanf("%d",&N);
printf("输入N个二维数字x和y:\n");
for(n=0;n<N;n++)
{
scanf("%f,%f",&point1.x,&point1.y);
/*统计落在区域的点数*/
for(i=0;i<6;i=i+2)
{
for(j=0;j<10;j=j+2)
{
if((point1.x>=j)&&(point1.x<j+2)&&(point1.y>=i)&&(point1.y<i+2))
{
a[i][j]++;
}
}
}
}
/*求出落在区域点数最大的数值*/
for(i=0;i<6;i=i+2)
{
for(j=0;j<10;j=j+2)
{
if(a[i][j]>max)
{
max=a[i][j];
row=i/2;
colum=j/2;
}
}
}
printf("点数最多的区域是:%d,max=%d.\n",b[row][colum],max);
}
求更简便的方法








只有顶一下