A. Circle of Students

传送门

A. Circle of Students

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n students standing in a circle in some order. The index of the i-th student is pi. It is guaranteed that all indices of students are distinct integers from 1 to n(i. e. they form a permutation).
Students want to start a round dance. A clockwise round dance can be started if the student 2 comes right after the student 1 in clockwise order (there are no students between them), the student 3 comes right after the student 2 in clockwise order, and so on, and the student n comes right after the student n−1 in clockwise order. A counterclockwise round dance is almost the same thing — the only difference is that the student i should be right after the student i−1 in counterclockwise order (this condition should be met for every i from 2 to n).
For example, if the indices of students listed in clockwise order are [2,3,4,5,1], then they can start a clockwise round dance. If the students have indices [3,2,1,4] in clockwise order, then they can start a counterclockwise round dance.
Your task is to determine whether it is possible to start a round dance. Note that the students cannot change their positions before starting the dance; they cannot swap or leave the circle, and no other student can enter the circle.You have to answer q independent queries.

Input
The first line of the input contains one integer q(1≤q≤200) — the number of queries. Then q queries follow.
The first line of the query contains one integer n
(1≤n≤200) — the number of students.
The second line of the query contains a permutation of indices p1,p2,…,pn
(1≤pi≤n), where pi is the index of the i-th student (in clockwise order). It is guaranteed that all pi are distinct integers from 1 to n(i. e. they form a permutation).

Output
For each query, print the answer on it. If a round dance can be started with the given order of students, print “YES”. Otherwise print “NO”.

Example
Input
5
4
1 2 3 4
3
1 3 2
5
1 2 3 5 4
1
1
5
3 2 1 5 4
Output
YES
YES
NO
YES
YES

题意:输入一串数字,判断是否可以顺时针或者逆时针形成一个环。

思路:比较相邻的数字大小

AC代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	int m,c,d;
	int n;
	int a[201], i;
	scanf("%d", &m);
	while (m--)
	{
		c = 0;
		d = 0;
		scanf("%d", &n);
		for (i = 0; i < n; i++)
		{
			scanf("%d", &a[i]);
		}
		for (i = 0; i < n - 1; i++)
		{
			if (a[i] > a[i + 1])
			{
				c++;
			}
			else
			{
				d++;
			}
		}

		if (a[0] > a[n - 1])
		{
			d++;
		}
		else
		{
			c++;
		}
		if (c == 0 || c == 1 || d == 0 || d == 1 || n == 1)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
}


猜你喜欢

转载自blog.csdn.net/m0_46669450/article/details/107865702