首页 > 试题广场 >

组装三角形

[编程题]组装三角形
  • 热度指数:5727 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛手里有N根木棒,分别编号为1~N,现在他从N根里想取出三根木棒,使得三根木棒构成一个三角形,你能计算出牛牛有多少种取法吗?(考虑两种取法中使用的木棒编号有一个不一样就认为是不同的取法)。

输入描述:
首先输入一个正整数N,接下来的一行共有N个正整数表示每个木棒的长度。
N ≤ 50, 木棒的长度 ≤ 10000.


输出描述:
输出一个整数表示方法数。
示例1

输入

5
1 2 3 4 5

输出

3
var compare = function (xs, ys) {//比较函数
    let x = parseInt(xs);
    let y = parseInt(ys);
    //print(x+"--"+y);
    if (x < y) {
        return -1;
    } else if (x > y) {
        return 1;
    } else {
        return 0;
    }
}
while(line=readline()){
    let n = parseInt(line);
    let lines = readline().split(" ");
    let lens = new Array();
    for(let i = 0 ; i < n; i++){
        lens[i] = parseInt(lines[i]);
    }    
    let count = 0;
    lens.sort(compare);
    //print(lens);
    for(let i = 0; i < n; i++){
        for(let j = i+1; j < n;j++){
            for(let k = j+1; k < n; k++){
                if(lens[i]+lens[j]>lens[k] && lens[k]-lens[i]<lens[j]){
                    count++;
                }
            }
        }
    }
    print(count);
    
}

发表于 2018-08-30 15:44:36 回复(0)
给JS草一下存在感
process.stdin.resume();
process.stdin.setEncoding('ascii');
 
var input = "";
var input_array = "";
 
process.stdin.on('data', function (data) {
    input += data;
});
 
process.stdin.on('end', function () {
    input_array = input.split("\n");
    var arr = input_array[1].split(" ");
    for(var i = 0; i < arr.length; i++){
        arr[i] = +arr[i];
    }
     
    arr.sort(function(a, b) { return a - b; });
    var str = arr.join(",");
    var count = 0;
    for(var i = 0; i < arr.length - 1; i++){
        for(var j = i + 1; j < arr.length; j++){
            var min = Math.abs(arr[i] - arr[j]);
            var max = arr[i] + arr[j];
            for(var k = arr[j] + 1; k < max; k++){
                if(arr.indexOf(k) >= 0){
                    var index = arr.indexOf(k);
                    while(arr[index] == k){
                        if( index != i && index != j){
                            count++;
                        }
                        index++;
                    }
                }
            }
        }
    }
    console.log(count);
});

发表于 2017-04-08 18:14:19 回复(0)

热门推荐

通过挑战的用户