脑瘫一样暴力,贪心找最小表示的串,判一个串是否是最小表示法时也是暴力地判。。
但是想不通复杂度是怎么算的。。
#include<bits/stdc++.h> using namespace std; #define maxn 205 char s[maxn]; int n; int check(int l,int r){//判断区间[l,r]是否是最小表示法 int len=r-l+1; for(int st=l+1;st<=r;st++){ int p1=l,p2=st; for(int i=0;i<len;i++){ if(s[p1]<s[p2])break; else if(s[p1]>s[p2])return 0; ++p1;++p2; if(p1>r)p1=l; if(p2>r)p2=l; } } return 1; } int main(){ int t;cin>>t; while(t--){ scanf("%s",s+1); n=strlen(s+1); for(int l=1,r;l<=n;l++){ r=n; while(!check(l,r)) --r; for(int i=l;i<=r;i++)cout<<s[i]; if(r!=n)cout<<" "; l=r; } cout<<' '; } }