2-字符串能否构成三角形及何种三角形

2-0 字符串三角形

给定3个字符串,第一个字符串的长度定义为字母的个数(包含大小写字母),第二个字符串的长度定义为数字的个数(阿拉伯数字0-9),第三个字符串的长度定义为非空格字符的个数。注意:字符串中可能含有空格,遇到回车认为一个字符串输出完毕,回车不算在内。

如果这三个字符串的长度可以组成一个三角形,那么输出1,如果不能组成三角形,输出0.

例如输入:

abcdeF 2de  //长度为8

12de ds 321 111 //长度为8

22    FFFd#!@ 3 //长度为10

输出为:

1

 

2-1 如果可以构成三角形,输出1之后还要输出三角形的类型,如果不能,则仅仅输出0。

这里规定三角形的类型有:A 直角三角形 B 等腰三角形 C等腰直角三角形 D 等边三角形 E其余三角形

如果满足等腰直角三角形,则仅输出C,不必输出A B(仅输出最难满足条件的区间),同理,如果满足D则不需要输出B。

则刚才的输出为

1 B


代码1:(自己写的):

#include <iostream>
#include <stdio.h>
#include <algorithm>

using namespace std;

int main()
{
    char c;
    int len1=0,len2=0,len3=0;
    while((c=getchar())!='\n')
    {
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
            len1++;
    }
    while((c=getchar())!='\n')
    {
        if(c>='0'&&c<'9')
            len2++;
    }
    while((c=getchar())!='\n')
    {
        if(c!=' ')
            len3++;
    }
    cout << len1<<" "<<len2<<" "<<len3<< endl;
    if(len1>len2) swap(len1,len2);
    if(len1>len3) swap(len1,len3);
    if(len2>len3) swap(len2,len3);
    if((len1+len2)>len3&&(len1+len3)>len2&&(len2+len3)>len1)
    {
        printf("1");
        if((len1==len2)&&(len2==len3)) printf("D等边三角形");
        else if((len1==len2)||(len1==len3)||(len2==len3))
            if(len1*len1+len2*len2==len3*len3)
                printf("C等腰直角三角形\n");
            else
                printf("B等腰三角形");
        else if(len1*len1+len2*len2==len3*len3)
                printf("A直角三角形");
        else
                printf("E其他三角形");
    }
    else
        printf("0");

    return 0;
}

代码2:(西交wrong):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>

using namespace std;
const int maxn = 100000;
typedef pair<int,int> P;
int main()
{
    char c;
    int len1,len2,len3;
    len1=len2=len3=0;
    while((c=getchar())!='\n')
        if((c>='A'&&c<='Z')||(c>='a'&&c<='z')) len1++;
    while((c=getchar())!='\n')
        if(c>='0'&&c<='9') len2++;
    while((c=getchar())!='\n')
        if(c!=' ') len3++;
    if(len1<len2) swap(len1,len2);
    if(len1<len3) swap(len1,len3);
    cout<<len1<<" "<<len2<<" "<<len3<<endl;
    if(len2+len3>len1)
    {
        printf("1\n");
        if(len1==len2&&len2==len3) cout<<'D'<<endl;
        else if(len1==len2||len1==len3||len2==len3)
                if(len1*len1+len2*len2==len3*len3||
            len1*len1+len3*len3==len2*len2||
            len2*len2+len3*len3==len1*len1)
                cout<<'C'<<endl;
                else
                    cout<<'B'<<endl;
            else
                if(len1*len1+len2*len2==len3*len3||
            len1*len1+len3*len3==len2*len2||
            len2*len2+len3*len3==len1*len1)
                cout<<'A'<<endl;
                else
                    cout<<'E'<<endl;
    }
    else
        printf("0\n");
   return 0;
}

(感谢西交wrong学长提供以上题目练习)

猜你喜欢

转载自blog.csdn.net/outer_star/article/details/81415233
今日推荐