求大三角形中三角形个数

一道笔试编程题要求求一个大三角形中所有小三角形的个数,大约是下面这种情况:


首先想到是的将问题由求边长为n的三角形个数->求边长为n-1的三角形个数->...求边长为1的三角形个数=1,回溯求得所有三角形个数。但是再仔细一看因为有重叠三角形和倒置的三角形,所以这个方法不可行。

接着找到三角形个数由三部分组成:

1,边长为1的小三角形个数=n*n

2,边长为2到n的小三角形个数=(1+2+...+n-1)+(1+2+...n-2)+...+1

3,当边长大于3时,倒置的小三角形个数=i从n-3开始每次减2直到小于等于0,,所有sum(1...i),即sum(i=n-3,sum(1...i),i-=2)


public static int countTheTriangle(int n){
	if(n==0) return 0;
    	int sum=1;
    	if(n>=2){
    		sum+=n*n;
    		for(int i=n-1;i>1;i--){
    			sum+=(1+i)*i/2;
    		}
    		if(n>=4){
    			for(int i=n-3;i>0;i-=2){
    				sum+=(1+i)*i/2;
    			}
    		}
    	}
    	return sum;
    }

应该还有数学方法直接求出来的,但是没有找到

Java,要输入三个数并计算三角形的面积,首先需要确认这三个数可以构成一个三角形。若这三个数三角形的三条边的长度,可以使用海伦公式来计算面积。海伦公式是一个根据三角形三边长度计算面积的公式,公式如下: 设三角形的三边长分别为a、b、c,半周长p = (a + b + c) / 2,则三角形的面积S可以通过以下公式计算: S = √[p(p - a)(p - b)(p - c)] 这里是一个简单的Java代码示例,用于输入三个数并计算三角形的面积: ```java import java.util.Scanner; public class TriangleArea { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入三角形的第一条边长:"); double a = scanner.nextDouble(); System.out.println("请输入三角形的第二条边长:"); double b = scanner.nextDouble(); System.out.println("请输入三角形的第三条边长:"); double c = scanner.nextDouble(); scanner.close(); double area = calculateTriangleArea(a, b, c); if (area > 0) { System.out.println("三角形的面积是: " + area); } else { System.out.println("这三个数无法构成三角形"); } } public static double calculateTriangleArea(double a, double b, double c) { // 检查是否能构成三角形 if (a + b > c && a + c > b && b + c > a) { double p = (a + b + c) / 2; return Math.sqrt(p * (p - a) * (p - b) * (p - c)); } else { // 不能构成三角形,返回-1 return -1; } } } ``` 在这段代码,首先通过`Scanner`类来获取用户输入的三个数,然后调用`calculateTriangleArea`方法来判断这三个数是否能构成三角形,并计算面积。如果输入的三边不能构成三角形,则返回-1,并在控制台输出相应信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值