首页 > 编程知识 正文

关于三角形解的个数的问题,初二数学三角形大题

时间:2023-05-03 06:25:11 阅读:153362 作者:396

看了前面的主题,觉得很有趣,所以我打算练习编程,编写一个寻找这种三角形数的通用程序。

具体的主题是数出图上有几个三角形。

大体的想法是首先给三角形的点(蓝)和线(红)编号。

每个点构建一维的二维数组,要素是通过该点的线

调查所有三点的组合,判断三角形是否可以构成。 判断条件为三点双共线且三点不共线。

具体代码:

import java.util.Arrays; publicclasstriangularnum { privatestaticintnum=0; //构造二维阵列,每个点为一维,每个维度元素表示经过修改的线段; private int point [ ]={ 1,2,3,4 }、{ 1,5 }、{ 2,5 }、{ 3,5 }、{ 3,6 }、{ 2,6 }、{6}、{ 5、} publicstaticvoidmain (string [ ] args ) {new TriangularNum ().count ); (}private void count ) (/* )满足三点为一个三角形的条件(1、三点双共线) 2、三点不共线(//三点组合for(intI=0); i len - 2; I ) for(intj=I1; j len - 1; j ) for(intm=j1; m len; m () if ) twoline(I,j )!=(-1 ) twoline(I,m )!=(-1 ) twoline(m,j )!=(-1 ) threenotline(I,j,m ) ) {System.out.println ) )可以构成三角形的点是((i 1)、((i 1)、(j 1)、) ) ) ) ) m 1 ); num; }}}}System.out.println ('三角形的数量为' num ' );//判断两点是否为同一条直线。 同一直线输出线的标签、不同一直线输出-1publicinttwoline(intx,int y ) ) for ) intI=0; i point[x].length; I ) )/binarysearch(x (,y )方法使用二分法检查x数组是否包含y值,包括下标,返回值不包含小于零的值。 使用前对x数组进行排序的Arrays.sort(point(y ) ); 阵列.二进制搜索(if ) (point [ y ],point[x][i] ) {return point[x][i]; }}return -1; //判断三点是否为同一条直线。 true是非共线的publicbooleanthreenotline(intx,int y,int z ) {Arrays.sort ) point[y]}; arrays.binary search (point [ x ],twoLine(y ) y,z ) )0) {return true; }return false; }

结果:

需要解决其他三角形数问题时,根据规则构造合适的二维排列即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。