首页 > 试题广场 >

拼凑三角形

[编程题]拼凑三角形
  • 热度指数:5276 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛手中有三根木棍,长度分别是a,b,c。牛牛可以把任意一根木棍长度削短,牛牛的目标是让这三根木棍构成一个三角形,并且牛牛还希望这个三角形的周长越大越好。

输入描述:
输入包括一行,一行中有正整数a, b, c(1 ≤ a, b, c ≤ 100), 以空格分割


输出描述:
输出一个整数,表示能拼凑出的周长最大的三角形。
示例1

输入

1 2 3

输出

5
JAVA
import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin=new Scanner (System.in);
		int a[]=new int [3];
		for(int i=0;i<3;i++) {
			a[i]=cin.nextInt();
		}
		Arrays.sort(a);
		if(a[0]+a[1]<=a[2])a[2]=a[2]-(a[2]-(a[0]+a[1]))-1;
				
		int out=0;
		out=a[0]+a[1]+a[2];
		System.out.print(out);
		

	}

}


发表于 2019-11-06 22:26:01 回复(0)
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[3];
        arr[0] = sc.nextInt();
        arr[1] = sc.nextInt();
        arr[2] = sc.nextInt();
        Arrays.sort(arr);
        while (arr[2] >= arr[0] + arr[1]) {
            arr[2]--;
        }
        System.out.println(arr[0] + arr[1] + arr[2]);
    }
}
发表于 2019-06-17 19:51:24 回复(0)

这题就两边之和大于第三边,只要最小两个之和大于第三个即可。

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int a[]=new int[3];
        for(int i=0;i<3;i++){
            a[i]=in.nextInt();
        }
        Arrays.sort(a);
        int res=0;
        //利用三角形两边之和大于第三边的性质
        if(a[0]+a[1]>a[2])
            res=a[0]+a[1]+a[2];
        else
            res=a[0]+a[1]+a[0]+a[1]-1;//第三边太大,
        //将他变成比前两边之和小一点点就好
        System.out.println(res);
    }
}
发表于 2019-03-16 00:12:15 回复(0)
 import java.util.*;
public class Main{
    public static void main(String[] args){
        try(Scanner in = new Scanner(System.in)){
            int[] sides = new int[3];
            for(int i = 0;i < 3;i++){
                sides[i] = in.nextInt();
            }
            System.out.println(helper(sides));
        }
    }
    public static int helper(int sides[]){
        Arrays.sort(sides);
        if(sides[0] + sides[1] > sides[2]) return sides[0] + sides[1] + sides[2];
        else return 2 * (sides[0] + sides[1]) - 1;
    }
}

发表于 2019-01-18 16:21:57 回复(0)