line them up(判断字符串的升降)

An eccentric coach asks players on the team to line up alphabetically at the start of practice. The coach does not tell the players whether they need to line up in increasing or decreasing order, so theyguess. If they guess wrong, the coach makes them run laps before practice. Given a list of names, you are to determine if the list is in increasing alphabetical order, decreasing alphabetical order or neither.
Input
The input file contains several test cases, each of them as described below.The first line will contain the number N of people on the team (2 ≤ N ≤ 20). Following that are N lines, each containing the name of one person. A name will be at least two characters and at most 12 characters in length and will consist only of capital letters, and with no white spaces (sorry BILLY BOB and MARY JOE). Duplicates names will not be allowed on a team.
Output
For each test case, output a single word on a line by itself: ‘INCREASING’ if the list is in increasing alphabetical order, ‘DECREASING’ if it is in decreasing alphabetical order, and otherwise ‘NEITHER’.

Sample Input
5
JOE
BOB
ANDY
AL
ADAM
11
HOPE
ALI
BECKY
JULIE
MEGHAN
LAUREN
MORGAN
CARLI
MEGAN
ALEX
TOBIN
4
GEORGE
JOHN
PAUL
RINGO

Sample Output
DECREASING
NEITHER
INCREASING

题意:给出若干个字符串,判断升降序。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <map>
using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        char name1[30],name2[30];
        memset(name1, 0 ,sizeof name1);
        memset(name2, 0 ,sizeof name2);
        int m = n, l = n;
        scanf("%s",name1);
        int len1 = strlen(name1);
        for(int i=1; i<n; i++)
        {
            scanf("%s",name2);
            int len2 = strlen(name2);
            int t = m;
            int len = min(len1,len2);
            for(int i=0; i<len; i++)
            {
                if(name1[i] > name2[i])
                {
                    m--;break;
                }
                else if(name1[i] < name2[i])
                {
                    m++;break;
                }
            }
            if(t == m)
                m += len1<=len2?1:-1;
            strcpy(name1, name2);
            len1 = len2;
        }
        if(2*l == m+1)
            printf("INCREASING\n");
        else if(m == 1)
            printf("DECREASING\n");
        else
            printf("NEITHER\n");
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值