A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡超 中级黑马   /  2013-12-15 11:01  /  1834 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个方法,根据给定的边长算出能组合成三角形的所有可能。
   给定:一个整形数组,例:int[]={1,2,3},来代表边长,
   要求:计算这些边长能构成三角形的所有可能并打印。

评分

参与人数 1黑马币 +6 收起 理由
狼王 + 6 赞一个!

查看全部评分

2 个回复

倒序浏览
两边之和大于第三边,两边之差小于第三边。。。。。。前提边大于0
回复 使用道具 举报
本帖最后由 熊猫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个三角形
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马