nyoj-659-判断三角形(大坑)

判断三角形

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述

小明非常喜欢研究三角形。现在,小明已经知道三角形的三条边,如果三条边能组成三角形,小明就会很高兴,他就会得到一个“YE”,如果他经过进一步的研究知道它又是等腰三角形,

他又会得一个“YE”,他再次研究出它又是一个等边三角形,当然,他又会得到一个“YE”。

小明当然不想自己判断了!那请你帮他写一个程序计算出给你三条边小明会得到几个“YE”?

提示1:最后普通三角形得到一个,等腰得到两个,等边得到三个

提示2:请严格按下面输出格式输出

输入
首先,输入一个T,代表有几组测试数据。

接下来有T行,每行有三个数,代表三条边。

输出
对于每组测试数据首先输出”Case #H:”H代表第几组测试数据,接下来输出小明得到的“YE”

数目,如果小明得不到“YE”,请输出“NO”。

样例输入
23 3 25 2 1
样例输出
Case #1:YE YECase #2:NO

解题思路:

这是一道很水很水的题,但是我却做了半天,是我思路出问题了。

一开始我让sum=0,三个条件并列,每符合一个条件则sum++,然后对应几就输出几个YE。

但是当输入2 2 5时,本来不能构成三角形,但是我的输出却为YE

这是为什么呢?

因为三个条件不是并列的,是包含关系,即第二个条件的前提是第一个条件,第三个条件的前提是前两个条件。

看好多人都说明明测试数据正确,但是却WA了,这个时候一定要静下心来,如果不是在比赛过程中,你可以先放下,忙会儿其他的,分散一下注意力之后再回来做。

代码

#include<stdio.h>
#include<algorithm>
using namespace std;
int bian[5];
int main()
{
	int n;
	int i;
	int now=1;
	int sum;
	scanf("%d",&n);
	while(n--)
	{
		for(i=1;i<=3;i++)
		    scanf("%d",&bian[i]);
		sort(bian+1,bian+4);
		sum=0;
		/*最初做法(三条件并列)
		if(bian[1]+bian[2]>bian[3])
		    sum++;
		if(bian[1]==bian[2]||bian[2]==bian[3])
		    sum++;
		if(bian[1]==bian[2]&&bian[1]==bian[3])
		    sum++;
		*/
		if(bian[1]+bian[2]>bian[3])
		{
		    sum++;
		    if(bian[1]==bian[2]||bian[2]==bian[3])
		    {
		        sum++;
		        if(bian[1]==bian[2]&&bian[1]==bian[3])
		            sum++;
		    }
		}
		printf("Case #%d:\n",now);
		switch(sum)
		{
			case 0:printf("NO\n");break;
			case 1:printf("YE\n");break;
			case 2:printf("YE YE\n");break;
			case 3:printf("YE YE YE\n");break;
		}
		now++;
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 21:16:39

nyoj-659-判断三角形(大坑)的相关文章

NYOJ 659 判断三角形

判断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小明非常喜欢研究三角形.现在,小明已经知道三角形的三条边,如果三条边能组成三角形,小明就会很高兴,他就会得到一个"YE",如果他经过进一步的研究知道它又是等腰三角形, 他又会得一个"YE",他再次研究出它又是一个等边三角形,当然,他又会得到一个"YE". 小明当然不想自己判断了!那请你帮他写一个程序计算出给你三条边小明会得到几个"YE"?

NYOJ 659 判断三角形【简单题】

判断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小明非常喜欢研究三角形.现在,小明已经知道三角形的三条边,如果三条边能组成三角形,小明就会很高兴,他就会得到一个"YE",如果他经过进一步的研究知道它又是等腰三角形, 他又会得一个"YE",他再次研究出它又是一个等边三角形,当然,他又会得到一个"YE". 小明当然不想自己判断了!那请你帮他写一个程序计算出给你三条边小明会得到几个"YE"?

【C语言】判断三角形类型

根据输入的三角形的三边判断三角形的类型,并输出其面积和类型. #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { float a, b, c; float s, area; printf("please input three line:\n"); scanf("%f%f%f", &a, &b, &c); //判断是否满足三角

九度oj 题目1048:判断三角形类型

题目1048:判断三角形类型 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8240 解决:3992 题目描述: 给定三角形的三条边,a,b,c.判断该三角形类型. 输入: 测试数据有多组,每组输入三角形的三条边. 输出: 对于每组输入,输出直角三角形.锐角三角形.或是钝角三角形. 样例输入: 3 4 5 样例输出: 直角三角形 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 i

判断三角形的类型并求其面积

一.问题描述 根据输入的三角形的三条边判断三角形的类型,并输出其面积和类型. 二.算法思想 首先判断其两条边之和是否大于第三边,若大于则判断可以构成三角形,再进一步判断该三角形是什么三角形,并计算这个三角形的面积:否则不能构成三角形. ①从键盘输入三角形的三条边 ②判断两边之和是否大于第三条边 ③若条件成立,则可以构成一个三角形,计算其面积.已知三角形的三个边长,计算其面积计算方法: A.海伦公式.已知三角形三边长分别为a.b.c,则它的面积为:S= p(p?a)(p?b)(p?c) ,其中p为

Junit、Hamacrest和Eclemma的安装和判断三角形使用实例

1,安装 下载Junit和Hamacrest的jar包 选择Help->Eclipse Marketplace->搜索EclEmma,Install: 2,新建工程之后添加Junit和Hamacrest的jar包 3,创建测试类 如图两个代码文件夹,创建同名的包,src中写一个判断三角形类型的程序,test中写使用Junit的测试代码 4,测试代码 在执行任意一个方法之前都会执行setUp方法,方法前标以@Before 在函数之前加@Test表示该方法是一个单元测试 被测试代码如下所示: pa

ST:Lab1实验报告(测试判断三角形边长)

Lab 1 实验报告 一.   实验任务 下载Junit(4.12), Hamcrest(1.3),并在Eclipse上添加这来那个jar包 在Eclipse上安装Eclemma,用来显示测试的覆盖率. 写一个java程序,来判断三角形的形状,并且Junit来对这个程序进行测试. a)       判断三角形问题的描述: 判断三角形的函数传入三个形参int a, int b, int c 来代表三角形的三个边.并且计算并判断三角形是等边三角形.等腰三角形以及三边都不等的三角形. 二.   实验过

判断三角形的类型

接受用户输入的三个整数,作为三角形的三条边,并判断此三角形的类型. #include<stdio.h> #include<stdlib.h> int main(void) { int a; int b; int c; printf("please input a:"); scanf("%d", &a); printf("please input b:"); scanf("%d", &b)

判断三角形类型-2009年哈尔滨工业大学计算机研究生机试真题

题目描述: 给定三角形的三条边,a,b,c.判断该三角形类型. 输入: 测试数据有多组,每组输入三角形的三条边. 输出: 对于每组输入,输出直角三角形.锐角三角形.或是钝角三角形. 样例输入: 3 4 5 样例输出: 直角三角形 解题代码: #include <stdio.h> int main(){ int arr[3]; int temp; while (scanf("%d%d%d",&arr[0],&arr[1],&arr[2] ) != EO