C語言:選出3根棍子組成周長儘可能長的三角形

題目描述:
有n棍棍子,棍子i的長度爲ai,想要從中選出3根棍子組成周長儘可能長的三角形。請輸出最大的周長,若無法組成三角形則輸出0。
算法分析:
選擇3根棍子,它們能組成三角形的充要條件爲:最長棍子的長度<其餘兩根棍子的長度之和。所以我們可以先用三重循環枚舉所有的棍子選擇方案,再利用條件判斷是否能組成三角形。

#include<stdio.h>
int main()
{
	int max(int x,int y);
	int ans=0;
	int n,a[100];
	printf("please enter n:");
	scanf("%d",&n);
	printf("please inputs 10 numbers:");
	for(int m=0;m<n;m++)
	scanf("%d",&a[m]);
	for(int i=0;i<n;i++)
	for(int j=i+1;j<n;j++)
	for(int k=j+1;k<n;k++)
	{
		int l=a[i]+a[j]+a[k];//周長
        int m=max(a[i],max(a[j],a[k]));//最長棍子的長度
        int r=l-m;//其餘兩根棍子的長度之和
        //判斷是否可以組長三角形
        if(m<r)
		{
			ans=max(ans,l);
		}
	}
	printf("%d",ans);
	return 0;
 } 
  //調用函數求倆者中的最大值 
 int max(int x,int y)
 {
 	return (x>y?x:y);
 }

運行結果:
please enter n:5
please inputs 5 numbers:2 3 4 5 10
12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章