http://poj.org/problem?id=1002
这道题耗时一整天,终于搞定了。这道题一开始写的是超时,最后懂了,问题原因是有二重循环加strcmp比较,时间复杂度是O(n^3)所以超时了。
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<vector> using namespace std; char PanCh(char ch); struct point{ char str[15]; int num; }; int n; char a[100005][150]; vector<point> vec; bool Comp(const point &a,const point &b) { return strcmp(a.str,b.str)<0; } int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",a[i]); } for(int i=0;i<n;i++){ int len=strlen(a[i]); char b[15]; int k=0; for(int j=0;j<len;j++){ if(a[i][j]=='-') continue; else if(k==3) { b[k++]='-'; b[k++]=PanCh(a[i][j]); } else b[k++]=PanCh(a[i][j]); } b[k++]='