一道应用题目的求解,请各位指点更为简便的方法
已知条件: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); } 求更简便的方法