三角形が作れるか
Posted: 2012年12月21日(金) 13:50
n本の棒があり棒iの長さはai。その棒から3つ選びできるだけ周囲の長い三角形を作り、
最大の周囲の長さを求めるプログラムなのですが、
n=5
a=2 3 4 5 10
としたとき12となりません。どこがいけないのでしょうか…
最大の周囲の長さを求めるプログラムなのですが、
n=5
a=2 3 4 5 10
としたとき12となりません。どこがいけないのでしょうか…
#include <stdio.h>
int max(int a, int b, int c){
int maxans=a;
if(maxans < b) maxans=b;
if(maxans < c) maxans=c;
return maxans;
}
int main(void){
int i,j,k;
int n; //棒の数
printf("n=");
scanf("%d",&n);
int a[n];
printf("a=");
for(i=0; i<n; i++){
scanf("%d",&a[i]);
}
printf("\n");
int len=0; //3辺の合計
int maxlen=0; //3辺のうち一番長いもの
int rest=0; //短い2辺の合計
int ans=0;
for(i=0; i<n; i++){
for(j=i+1; j<n; j++){
for(k=j+1; k<n; k++){
len=a[i]+a[j]+a[k];
maxlen=max(a[i], a[j], a[k]);
rest= len-maxlen;
}
if(maxlen<rest){
ans = len;
}
}
}
if(ans==0){
printf("can't make\n");
}else{
printf("%d\n",ans);
}
return 0;
}