从N根棍子里选择周长最长的三角形并输出

ACMer_Evil 2018-05-28 09:00:55
#include <iostream>
//#include<algorithm>
#include<windows.h>
#include<windef.h>

using namespace std;

int main()
{
int T;
cin>>T;
int a[T];
for(int i=0;i<T;i++){
cin>>a[i];
}
int len,m,d,c=0;
for(int i=0;i<T;i++){
for(int j=i+1;i<T;j++){
for(int k=j+1;k<T;k++){
len=a[i]+a[j]+a[k];
m=max(a[j],a[k]);
m=max(a[i],m);
d=len-m;
if(d>m){
c=max(c,len);
}
}
}
}
cout<<c;

}
不知道为什么程序运行时出错,另外想确定一下,max和min函数的头文件在<algorithm>或者<windows.h>和<windef.h>有什么区别吗?
...全文
1192 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-05-29
  • 打赏
  • 举报
回复
楼主的逻辑似乎没有考虑选择最长的三根棍子是否能够组成三角形呢。三角形需要遵循两边之和大于第三边;
ashang1988 2018-05-28
  • 打赏
  • 举报
回复
 
for(int i=0;i<T;i++)
{
    for(int j=0; i<T; j++)
    {
        if(a[i] == a[j])
        {
            continue;
        }
        for(int k=0; k<T; k++)
        {
            if(a[k] == a[i] || a[k] == a[j])
            continue;

            len=a[i]+a[j]+a[k];
            m=max(a[j],a[k]);
            m=max(a[i],m);
            d=len-m;
            if(d>m)
           {
                c=max(c,len);
            }
        }
    }
}
ashang1988 2018-05-28
  • 打赏
  • 举报
回复

for(int i=0;i<T;i++)
{
    for(int j=0; i<T; j++)
    {
        if(i == j)
        {
            continue;
        }
        for(int k=0; k<T; k++)
        {
            if(k == i || k == j)
            continue;
 
            len=a[i]+a[j]+a[k];
            m=max(a[j],a[k]);
            m=max(a[i],m);
            d=len-m;
            if(d>m)
           {
                c=max(c,len);
            }
        }
    }
}
上边那个没有考虑有等长的棍子

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧