http://acm.timus.ru/problem.aspx?space=1&num=1427
没想到这道题错了N遍 细节很重要呀
代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cstring> #include<cmath> #include<set> #include<vector> #include<list> #include<stack> #include<queue> using namespace std; typedef pair<int,int> pp; typedef long long ll; const int N=100005; char s[N]; int main() { //freopen("data.in","r",stdin); int n,m; while(scanf("%d %d",&n,&m)!=EOF) { gets(s); gets(s);//puts(s); int ln=strlen(s); int sum=0; int a=0,b=0; for(int i=0;i<=ln;++i) { if(i==ln) { if(a>0) ++sum; break; } if(s[i]==' '||(s[i]<='Z'&&s[i]>='A')||(s[i]<='z'&&s[i]>='a')) { if(b!=-1) ++b; }else { b=-1; } ++a; if(b!=-1&&b==m) { ++sum; a=0; b=0; continue; } if(b==-1) { if(a==n) { ++sum; a=0; b=0; }else if(a>n) { ++sum; a=0; b=0; --i; } } } cout<<sum<<endl; } return 0; }