《挑战程序设计竞赛》里的一道基础题

我写了代码,但是输入数据后无法显示结果,不知道是代码的问题还是编译器的问题。

原题如下:
有n根棍子,棍子i的长度为ai。想要从中选出三根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。
限制条件

3 ≤ n ≤ 100

1 ≤ ai ≤ 10^6
输入

n = 5

a = {2,3,4,5,10}

输出

12(选择3、4、5时)

输入

n = 4

a = {4,5,10,20}

输出

0(无论怎么选都无法组成三角形)


#include <stdio.h>
int max(int a,int b){
  return a>b?a:b;
}

void sum(int n,int*a){
  int sum=0;
  for (int i = 0; i < n; i++)
  {
    for (int j = i+1; i < n; j++)
    {
      for (int k = j+1; k < n; k++)
      {
          int three=max(a[i],max(a[j],a[k]));
          int he = a[i]+a[j]+a[k];
          int rest = he-three;
          if(rest>three)
            sum = max(sum,he);
      }
      
    }
    
  }
    printf("%d",sum);
}

int main(){
  int n;//棍子数量
  int bian[100];//存放n个边长
  scanf("%d",&n);
  
  for (int i = 0; i < n; i++)
  {
    scanf("%d",&bian[i]);
    
  }
  sum(n,bian);
  return 0;
}

运行结果如下:

img

这里错了,是j

img