B - Shiritori

Time limit : 2sec / Memory limit : 1024MB

Score : 200 points

Problem Statement

Takahashi is practicing shiritori alone again today.

Shiritori is a game as follows:

  • In the first turn, a player announces any one word.
  • In the subsequent turns, a player announces a word that satisfies the following conditions:
    • That word is not announced before.
    • The first character of that word is the same as the last character of the last word announced.

In this game, he is practicing to announce as many words as possible in ten seconds.

You are given the number of words Takahashi announced, N, and the i-th word he announced, Wi, for each i. Determine if the rules of shiritori was observed, that is, every word announced by him satisfied the conditions.

Constraints

  • N is an integer satisfying 2≤N≤100.
  • Wi is a string of length between 1 and 10 (inclusive) consisting of lowercase English letters.

Input

Input is given from Standard Input in the following format:

N
W1
W2
:
WN

Output

If every word announced by Takahashi satisfied the conditions, print Yes; otherwise, print No.


Sample Input 1

4
hoge
english
hoge
enigma

Sample Output 1

No

As hoge is announced multiple times, the rules of shiritori was not observed.


Sample Input 2

9
basic
c
cpp
php
python
nadesico
ocaml
lua
assembly

Sample Output 2

Yes

Sample Input 3

Copy

8
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaa
aaaaaaa

Sample Output 3

No

Sample Input 4

3
abc
arc
agc

Sample Output 4

No

#include <iostream>
#include <cstring>
#include <string>
using namespace std;
const int N=100+10;
char a[N][15];
int main()
{
	int n;
	bool pd=true;
	cin>>n;
	memset(a,0,sizeof(a));
	for(int i=0;i<n;i++)
		cin>>a[i];
	for(int i=0;i<n-1;i++)
	{
		int l=strlen(a[i]);
		if(a[i][l-1]!=a[i+1][0])
		{
			cout<<"No";
			pd=false; 
			break;
		}	
		for(int j=i+1;j<n;j++)
		{
			if(strcmp(a[i],a[j])==0)
			{
				cout<<"No";
				pd=false;
				break;
			}
		} 
	}
	if(pd)
	cout<<"Yes";	
    return 0;		
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值