您的位置:首页 > 其它

Ural 2045 Richness of words(构造)

2016-08-07 20:56 1126 查看

045. Richness of words

Time limit: 0.5 second

Memory limit: 64 MB

For each integer i from 1 to n, you must print a stringsi of length
n consisting of lowercase Latin letters.The stringsi must contain exactly
i distinct palindrome substrings.Two substrings are considered distinct if they are different as strings.

Input

The input contains one integer n (1 ≤
n ≤ 2000).

Output

You must print n lines. If for some
i, the answer exists, print it in the form “i : si” wheresi is one of possible strings.Otherwise, print “i : NO”.

Sample

inputoutput
4

1 : NO
2 : NO
3 : abca
4 : bbca

分析:四个字符abcd随便构造,n <= 2 单独处理,否则abc循环放,这样可以构造出长度为3的,长度每加1将一位换成d即可。

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f
#define eps 1e-9
#define MAXN 10005
using namespace std;
int n;
char s[MAXN];
int main()
{
scanf("%d",&n);
if(n == 1)
{
cout<<"1 : a"<<endl;
return 0;
}
if(n == 2)
{
cout<<"1 : NO"<<endl;
cout<<"2 : aa"<<endl;
return 0;
}
cout<<"1 : NO"<<endl;
cout<<"2 : NO"<<endl;
for(int i = 0;i < n;i++) s[i] = 'a' + i % 3;
s
= '\0';
cout<<"3 : "<<s<<endl;
for(int i = 4;i <= n;i++)
{
s[i-4] = 'd';
cout<<i<<" : "<<s<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: