hdu String Problem(最小表示法入门题)
2024-07-16 05:41:29 218人阅读
hdu 3374 String Problem
最小表示法
view code#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>#include <string>using namespace std;const int N = 10010;int n;char s[105];map<string, int >ma;void getminsub(char *s){ int i=0, j=1, len=strlen(s), k=0; while(i<len && j<len && k<len) { if(i==j) j++; int ni=(i+k)%len, nj=(j+k)%len; if(s[ni]>s[nj]) i += k+1, k=0; else if(s[ni]<s[nj]) j+=k+1, k=0; else k++; } char tmp[105]; strcpy(tmp, s+i); s[i] = ‘\0‘; strcpy(tmp+len-i, s); strcpy(s, tmp);}int main(){ while(scanf("%d", &n)>0) { ma.clear(); int ans = 0; for(int i=1; i<=n; i++) { scanf("%s", s); getminsub(s); if(!ma[s]) { ans++; ma[s] = i; } } printf("%d\n", ans); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。