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;
}