问题:
有n个半圆形金属条c1,c2,c3...cn,半圆直径分别为l1,l2,l3...ln.(如图)问可否将这些金属环首尾相接形成一个大环. 要求:输入3组直径数据(组内数据之间已用逗号隔开,每组数据间已用分号隔开),判断这3组金属条各自是否可以首尾相接.针对每组数据,如果可以,输出Y,否则输出N.
例:输入 3,3;3,4,5;4,5,10 程序需要输出Y,Y,N(前两组可以相接,第三组不可以.结果间用逗号隔开)
思路:最大边之外所有边的和与最大边的比较
简单代码如下;
(以“#”号结束),例如输入数据:1,1,1,1,1,1,5,90;2,4,6,1,8#
- #include<iostream>
-
using namespace std;
-
-
int main()
-
{
-
int Diameter[100];
-
int num;// the number of diameter
-
int i,j;
-
int value;
-
char temp;
-
//int temp;
-
int MaxValue,MaxNum,Sum;
-
-
-
while(true)//get the input data
-
{
-
num=0;
-
Sum=0;
-
-
while(true)
-
{
-
-
cin>>value;
-
cin>>temp;
-
//cout<<temp<<endl;
-
Diameter[num++] = value;
-
-
if(temp == ';' || temp == '#' )
-
break;
-
}
-
-
MaxValue = Diameter[0];
-
MaxNum = 0;
-
for(i=1 ; i<num; i++) //get the max of diameter
-
{
-
if(Diameter[i] > MaxValue)
-
{
-
MaxValue = Diameter[i];
-
MaxNum = i;
-
}
-
}
-
//get sum of diameter except the max
-
for(i=0; i<num; i++)
-
{
-
if(i == MaxNum)
-
continue;
-
Sum += Diameter[i];
-
}
-
if(temp == '#')
-
{
-
if(MaxValue >= Sum)
-
cout<<"N"<<endl;
-
else
-
cout<<"Y"<<endl;
-
break;
-
}
-
if(MaxValue >= Sum)
-
cout<<"N,";
-
else
-
cout<<"Y,";
-
}
-
return 0;
-
-
}
阅读(483) | 评论(0) | 转发(0) |