标签:include 提示 scan 第一个 包括 它的 code 解题思路 数据
小明非常喜欢研究三角形。如今,小明已经知道三角形的三条边。假设三条边能组成三角形,小明就会非常高兴,他就会得到一个“YE”,假设他经过进一步的研究知道它又是等腰三角形,
他又会得一个“YE”,他再次研究出它又是一个等边三角形,当然,他又会得到一个“YE”。
小明当然不想自己推断了。那请你帮他写一个程序计算出给你三条边小明会得到几个“YE”?
提示1:最后普通三角形得到一个,等腰得到两个。等边得到三个
提示2:请严格按以下输出格式输出
接下来有T行,每行有三个数,代表三条边。
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;
}标签:include 提示 scan 第一个 包括 它的 code 解题思路 数据
原文地址:http://www.cnblogs.com/gccbuaa/p/6702196.html