Codefroces 410 B.Mike and strings

来源:互联网 发布:windows仿mac软件 编辑:程序博客网 时间:2024/06/13 02:37

http://codeforces.com/problemset/problem/798/B

题目大意:给出n个字符串,可以把每个字符串的第一个字符加到字符串最后。问全部相同的话需要的最少操作次数是多少。

解法:因为只有50个字符串,字符串最大长度为50,直接枚举。复杂度O(n^3)

代码如下:

#include<bits/stdc++.h>using namespace std;int main(){int n, cnt, ans = 0x3f3f3f3f;string str[55], goal;bool flag = 1;scanf("%d", &n);for(int i = 0; i < n; i++)cin >> str[i];goal = str[0];for(int i = 0; i < goal.size() && flag; i++){char ch = goal[0];goal.erase(goal.begin());goal += ch;cnt = 0;for(int j = 0; j < n && flag; j++){flag = 0;for(int k = 0; k < str[j].size(); k++){if(!flag && str[j] == goal){flag = 1;cnt += k;}char t = str[j][0];str[j].erase(str[j].begin());str[j] += t;}}if(ans > cnt)ans = cnt;}if(!flag)cout << "-1" << endl;elsecout << ans << endl;return 0;}


0 0
原创粉丝点击