题目链接:
http://codeforces.com/problemset/problem/745/A
题解:
题目大意:
给出一个字符串,每次只能将最后的字母放到最前面,看能不能构成新的字符串,问你最后能构成几个字符串(包括了原来的字符串)。
水题,map判下重就行了。
代码:
#include <cstdio>
#include <map>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 50+10;
char s1[maxn],s2[maxn];
map<string,int> mp;
int main()
{
scanf("%s",s1);
int len=strlen(s1);
int cnt=0;
mp.clear();
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
s2[j]=s1[(j+i)%len];
if(mp[s2]==0)
{
mp[s2]=1;
cnt++;
}
}
printf("%d\n",cnt);
}
本文介绍了一个简单的字符串处理问题及其解决方案。题目要求通过旋转字符串判断可以形成多少种不同的字符串。使用 C++ 实现,主要思路为利用 map 记录所有可能的排列,并统计不重复的字符串数量。

被折叠的 条评论
为什么被折叠?



