首页 > 编程知识 正文

一共有几个三角形的题目,数三角形个数的规律

时间:2023-05-04 10:47:46 阅读:153365 作者:3

主题:编程计算下一个图形包含多少三角形。

思路:首先,在图中各线段的交点处标注字母。 两个文字并不构成一条直线,而是使用穷举法列出所有直线。

然后,将图中的所有线段组合成任意三条。 如果这三条线段可以构成三角形,计数就会加1。 否则,计数不会改变。

要确定直线是否可以构成三角形,必须注意两条直线之间是否有交点,三条直线是否共线,三条直线是否有相同的交点。

#include 'stdio.h '

#define NO_POINT '0'

char * map[]={'ab ',' ad ',' db ',' ag ',' gc ',' ac ',' ae ',' ej ',' jh ',

" aj "、" eh "、" af "、" ak "、" ai "、" fk "、" fi "、" ki "、" de "、" df "、" dg "、" ef "、" eg "、

' fg '、' bj '、' bk '、' bg '、' jk '、' jg '、' kg '、' bh '、' bc '、' hi '、' hc '、' ic'};

char *line[]={'adb '、' agc '、' aejh '、' afki '、' defg '、' bjkg '、' bhic'};

intcontains(char*str,char a ) {

int i=0;

wile(str[I]!=0}{

if(str[I]==a ) {

返回1;

}

I;

}

返回0;

}

intisinaline(chara、char b、char c ) {

int i=0;

for(I=0; i7; I ) {

if(contains(line[I],a )==1

contains(line[I],b )==1

contains(line[I],c )==1) {

返回1;

}

}

返回0;

}

chargetcrosspoint(char*S1,char *s2 ) {

if(S1==) S2 ) {

return *s1;

}

if () S1==* ) S21 ) }{

return *s1;

}

if(* ) S1 )==*s2

return *s2;

}

if(* ) S1 )==* ) S21 ) }{

返回* (s1);

}

return NO_POINT;

}

intistriangle(char*str1、char *str2和char * str3) )

char p1、p2、p3;

P1=getcrosspoint(str1,str2);

if(P1==no_point ) return 0;

P2=getcrosspoint(str2,str3);

if(P2==no_point ) return 0;

P3=getcrosspoint(str1,str3);

if(P3==no_point ) return 0;

if(p1!=p2 p2!=p3 p1!=p3

isinaline(P1,p2,p3 )==0) ) )

//printf () (%c,%c ) )、p1、p2、p3 );

返回1;

}

返回0;

}

输入获取计数

int i,j,k;

int count=0;

for(I=0; i36; I ) {

for(j=I1; j36; j ) {

for(k=j1; k36; k ) {

if(istriangle(map[I],map[j],map[k] ) )

出局;

}

}

}

}

返回计数;

}

主()。

打印(it contains % dtriangle (n ),getTriangleCount ) );

getchar (;

}

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