OJ,VJ三角形

本文介绍了一种使用C语言判断三条边是否能构成三角形的方法。通过输入三条边的长度,程序能够准确判断并输出结果。适用于初学者理解和实践条件判断与循环控制。

给定三条边,请你判断一下能不能组成一个三角形。
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Sample Input
2
1 2 3
2 2 2
Sample Output
NO
YES

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    long long  n, m, flag, i, j;
    double a[10], b[200];
    while(scanf("%lld", &m) != EOF)
        {
           for(i = 0; i < m; i++)
           {
               for(j = 0; j < 3; j++)
                    scanf("%lf", &a[j]);

               flag = 1;
               for(j = 0; j < 3; j++)
                if(a[j] >= a[(j + 1)%3] + a[(j + 2)%3])
                    {
                        flag = 0;
                        break;
                    }

                if(flag == 0)
                    printf("NO\n");
                else
                    printf("YES\n");
           }
        }
    return 0;
}

注意题意中的数据。是“三个正数”,而非“三个整数”。所以才用double类型定义数据。否则会Time Limit Exceed

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
XTU OJ 中与锐角三角形相关的题目为 1393 锐角三角形。该题的题目描述为:给定 n 条边,任选 3 条边,求能组成多少个锐角三角形(选的边不同就认为是不同的三角形)。输入格式为:第一个是一个整数 T(1≤T≤1000),表示样例的个数;每个样例占 2 行,第一行是一个整数 n(3≤n≤100),表示边数,第二行是 n 个整数 ai(1≤ai≤10000),表示边的长度。输出要求依次每行输出一个样例的结果。 示例输入和输出如下: ``` 样例输入 2 4 1 1 1 1 3 1 2 3 样例输出 4 0 ``` 判断锐角三角形的方法是:两条较短边的平方和大于最长边的平方。以下是几种不同实现的代码: 代码一: ```c #include<stdio.h> #include<stdio.h> #include<stdio.h> int sheng(int a[])//冒泡排序 { int t,i,j; for(i=0;i<2;i++) { for(j=i+1;j<3;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } } int main() { int k; scanf("%d",&k); while(k--) { int a[101],b[3]; int n,i,j,k,p,flag=0;//两顿爆int scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<n-2;i++) { for(j=i+1;j<n-1;j++) { for(k=j+1;k<n;k++) { b[0]=a[i];b[1]=a[j];b[2]=a[k];//分组 sheng(b);//排序 这样就可以很容易找最大角余弦值了 p=b[0]*b[0]+b[1]*b[1]-b[2]*b[2];//分母恒大于零 所以看分子正负就好 if(p>0) { flag++;//计数 } } } } printf("%d\n",flag); } } ``` 代码二: ```c #include<stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int n; int s[100] = {0}; scanf("%d",&n); for(int i = 0;i<n;i++) scanf("%d",&s[i]); for(int i = 0;i<n-1;i++)//冒泡排序从小到大 { for(int j = i+1;j<n;j++) { if(s[i]>s[j]) { int t = s[j]; s[j] = s[i]; s[i] = t; } } } int count = 0; for(int i = 0;i<n-2;i++)//循环遍历边长 { for(int j = i+1;j<n-1;j++) { for(int k = j+1;k<n;k++) { //判断三角形 if((s[i]+s[j]>s[k])&&((s[i]*s[i]+s[j]*s[j])>(s[k]*s[k]))) { count++; } } } } printf("%d\n",count); } } ``` 代码三: ```c #include<stdio.h> #include<stdbool.h> bool triangle(int a,int b,int c) { return ((a*a+b*b>c*c)&&(a*a+c*c>b*b)&&(b*b+c*c>a*a)); }//锐角三角形的判断,两条小边的平方的和大于第三边的平方 int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int a[n]; int count=0; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n-2;i++) { for(int j=i+1;j<n-1;j++)//记住这里循环是从内到外的,所以j<n-1, { for(int k=j+1;k<n;k++) { if(triangle(a[i],a[j],a[k])) { count++; } } } }//利用一个三重循环枚举所有的可能性 printf("%d\n",count); } return 0; } ``` 以上代码均通过枚举所有可能的三条边组合,并根据锐角三角形的判断条件来统计能组成锐角三角形的数量[^1][^2][^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值