黑马程序员技术交流社区

标题: 面试中的一个题目 [打印本页]

作者: 胡超    时间: 2013-12-15 11:01
标题: 面试中的一个题目
写一个方法,根据给定的边长算出能组合成三角形的所有可能。
   给定:一个整形数组,例:int[]={1,2,3},来代表边长,
   要求:计算这些边长能构成三角形的所有可能并打印。


作者: 胡永城    时间: 2013-12-15 14:26
两边之和大于第三边,两边之差小于第三边。。。。。。前提边大于0
作者: 熊猫86    时间: 2013-12-15 23:19
本帖最后由 熊猫86 于 2013-12-15 23:23 编辑
  1. public class TriangleTest {

  2.         public static void main(String[] args) {
  3.                 int[] arr = {1,2,3,4,5};
  4.                 Triangle tri = new Triangle();
  5.                 tri.print(arr);

  6.         }

  7. }

  8. class Triangle {
  9.         public void print(int[] arr){
  10.                 int count = 0;
  11.                 for(int x=0; x<arr.length-2; x++) {
  12.                         for(int y=x+1; y<arr.length-1; y++) {
  13.                                 for(int z=y+1; z<arr.length; z++) {
  14.                                         if(arr[x]>0 && arr[y]>0 && arr[z]>0
  15.                                                         && (arr[x]+arr[y]>arr[z])
  16.                                                         && (arr[x]+arr[z]>arr[y])
  17.                                                         && (arr[z]+arr[y]>arr[x])){
  18.                                                 count++;
  19.                                                 System.out.println("["+arr[x]+","
  20.                                                                 +arr[y]+","
  21.                                                                 +arr[z]+"]");
  22.                                                
  23.                                         }
  24.                                        
  25.                                 }
  26.                         }
  27.                 }
  28.                 System.out.println("共可以组成"+count+"个三角形");
  29.         }
  30. }
复制代码
三层for循环,只要满足任意两边之和大于第三边且三边均为正数即可。
打印结果:
[2,3,4]
[2,4,5]
[3,4,5]
共可以组成3个三角形





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2