百科问答小站 logo
百科问答小站 font logo



微博里的27个三角形是怎么数出来的? 第1页

  

user avatar   xie-dan-9 网友的相关建议: 
      

总共24个,答案肯定对的。

我是用HTML的图:


答案如下:

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

1 5 6

1 5 10

1 5 11

1 6 7

1 6 8

1 6 9

1 6 10

1 6 11

1 7 8

1 7 9

1 8 9

1 10 11

2 5 6

3 5 10

4 5 11

5 6 9

6 7 10

6 8 11

total have 24 triangles

逻辑更加简化:

a,b,c 构成三角形的条件为:

ab,bc,ac 均为线段,且abc不为线段。

用的是python:

       #!/usr/bin/python  # total 11 dots alldots=11   # total 7 lines allines=7 lines=[[1,2,6],[1,3,7,10],[1,4,8,11],[1,5,9],[2,3,4,5],[6,7,8,9],[5,6,10,11]]  def isline(a,b):     for i in range(0,allines):         if( (a in lines[i]) and (b in lines[i])) :             return 1     return 0          def isline3(a,b,c):     for i in range(0,allines):         if( (a in lines[i]) and (b in lines[i]) and (c in lines[i])) :             return 1     return 0 def istriangle(a,b,c):     if( isline(a,b) and isline(a,c) and isline(b,c) ):         if(isline3(a,b,c) ) :             return 0         else :             return 1     return 0 count=0 # for each 3 dots check if they are a triangle. for i in range(1,alldots+1) :   for j in range(i+1,alldots+1) :       for k in range(j+1,alldots+1) :           if ( istriangle(i,j,k) ) :             print(i,j,k )             count = count+1 print ("total have ",count," triangles")     

user avatar   ohUSB 网友的相关建议: 
      

用JS换一种思路写个试试

输出:

1,2,3

1,2,4

1,2,5

1,3,4

1,3,5

1,4,5

1,5,6

1,5,10

1,5,11

1,6,7

1,6,8

1,6,9

1,6,10

1,6,11

1,7,8

1,7,9

1,8,9

1,10,11

2,5,6

3,5,10

4,5,11

5,6,9

6,7,10

6,8,11

一共 24个三角形

代码:

       <html> <body>  <script>  var dotArr=new Array(); var inLineArr=new Array();  var dot = new Array([2,3,4,5,6,7,8,9,10,11],[1,3,4,5,6],[1,2,4,5,7,10],[1,2,3,5,8,11],[1,2,3,4,6,9,10,11],[1,2,5,7,8,9,10,11],[1,3,6,8,9,10],[1,4,6,7,9,11],[1,5,6,7,8],[1,3,5,6,7,11],[1,4,5,6,8,10]); var inLineArray= new Array([1,2,6],[1,3,7,10],[1,4,8,11],[1,5,9],[2,3,4,5],[6,7,8,9],[5,6,10,11]);  for(i=0;i<dot.length;i++){    for (j =0; j<dot[i].length;j++){    if((i+1)<dot[i][j]){   for (k =0; k<dot[dot[i][j]-1].length;k++){   if(dot[i][j]<dot[dot[i][j]-1][k]&&(dot[i].indexOf(dot[dot[i][j]-1][k])!=-1)){    dotArr.push((i+1)+","+dot[i][j]+","+dot[dot[i][j]-1][k]);    }   }     }  } }    for(var l=0;l<inLineArray.length;l++){ var i=0 if(inLineArray[l].length-i>2) { for (;i<inLineArray[l].length;i++){  var j=i+1 if(inLineArray[l].length-j>1){   for (;j<(inLineArray[l].length);j++){   var k=j+1   if(inLineArray[l].length-k>0){   for (;k<inLineArray[l].length;k++){   inLineArr.push(inLineArray[l][i]+","+inLineArray[l][j]+","+inLineArray[l][k])   }   }   }   }  } }  }     var k=0; for(var i=0;i<dotArr.length;i++){ var hasEle= false;  foronce: { for(var j=0;j<inLineArr.length;j++){ if(dotArr[i]==inLineArr[j]){ hasEle = true; break foronce; } } if(!hasEle) document.write(dotArr[i]+"<br>"); k=k+1; }   }  document.write("一共 "+k+"个三角形<br>")  </script> </body>  </html>      

大概意思:

1. 定义二维数组,标出每个点可以连接到的其他点

2. 遍历所有可能出现的三角形组合(包括三点共线的情况)

3. 遍历所有共线

4. 去除共线情况,输出数组

4. 我写的的确很烂




  

相关话题

  已知一个圆,一个点和一条直线,如何找到一个与圆相切过点且圆心在直线上的圆? 
  如何评价微博用户造假污蔑酒店装双面镜? 
  如何评价郭乐乐(国服第五骚)? 
  如何评价王小山微博因特朗普当选而产生的吃翔事件? 
  为什么会有梁艳萍和方方这种人? 
  如何评价微博用户无为李爷? 
  如何看待女生转发李彦宏遭砸场的微博之后,被派出所问询? 
  三根表针,两两互为 120° 是几点? 
  对于给定的椭圆,如何求椭圆上各点到中心的平均距离? 
  如何在田字格中作出一个正三角形? 

前一个讨论
下图有多少个三角形?
下一个讨论
如何看待以太坊硬分叉后的Ethereum Classic(ETC)上线P网交易?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利