关于暴力,并求助

P1308 [NOIP2011 普及组] 统计单词数

@[Baoqiancheng11](/user/535149) 哥们,我80分的RE,你看看有没有帮助((( ~~改到100记得跟我说一声,我也逝世~~ ~~说白了,蹭楼~~ ```cpp #include<bits/stdc++.h>//万能头YYDS using namespace std; int minn=1e9;//第一次出现 int cnt;//次数 string s1;//目标str string s2;//文章 string b;//当前单词 void xx()//b转小写 { for(int i=0;i<b.length();i++) if(b[i]>='A' && b[i]<='Z') b[i]=b[i]-'A'+'a'; } int i; int main(){ cin>>s1; for(int j=0;j<s1.length();j++)//s1转小写 if(s1[j]>='A' && s1[j]<='Z') s1[j]=s1[j]-'A'+'a'; getchar();//吞回车 getline(cin,s2);//全行吞 for(;i<s2.length();) { b="";//初始化单词 int j=i;//单词首地址 while(s2[i]!=' ')//拼单词 { b+=s2[i]; i++; } i++;//过空格 xx();//转小写 if(b==s1)//判断 { cnt++; minn=min(minn,j); } } //输出 if(cnt)cout<<cnt<<" "<<minn; else cout<<-1; return 0; } ``` 各位楼下的好人们,也帮忙看看改改罢……
by Max6700 @ 2023-05-24 20:18:07


对了,第一次出现的位置好像是0哈
by Max6700 @ 2023-05-24 20:28:53


```cpp #include<bits/stdc++.h>//万能头YYDS using namespace std; int minn=1e9;//第一次出现 int cnt;//次数 string s1;//目标str string s2;//文章 string b;//当前单词 void xx()//b转小写 { for(int i=0;i<b.length();i++) if(b[i]>='A' && b[i]<='Z') b[i]=b[i]-'A'+'a'; } int i; int main(){ cin>>s1; for(int j=0;j<s1.length();j++)//s1转小写 if(s1[j]>='A' && s1[j]<='Z') s1[j]=s1[j]-'A'+'a'; getchar();//吞回车 getline(cin,s2);//全行吞 for(;i<s2.length()-1;) { b="";//初始化单词 int j=i;//单词首地址 while(s2[i]!=' ')//拼单词 { b+=s2[i]; i++; } i++;//过空格 xx();//转小写 if(b==s1)//判断 { cnt++; minn=min(minn,j); } } //输出 if(cnt)cout<<cnt<<" "<<minn; else cout<<-1; return 0; } ```
by Max6700 @ 2023-05-26 20:48:10


```cpp #include<bits/stdc++.h> using namespace std; int minn=1e9; int cnt; string s1; string s2; string b; void xx() { for(int i=0;i<b.length();i++) if(b[i]>='A' && b[i]<='Z') b[i]=b[i]-'A'+'a'; } int i; int main(){ cin>>s1; for(int j=0;j<s1.length();j++) if(s1[j]>='A' && s1[j]<='Z') s1[j]=s1[j]-'A'+'a'; getchar(); getline(cin,s2); if(s2[0]==' ')//开头空格过滤,此处修改 while(s2[i]==' ') i++; for(;i<s2.length()-1;)//此处修改 { b=""; int j=i; while(s2[i]!=' '&&i<s2.length()-1)//此处修改 { b+=s2[i]; i++; } i++; xx(); if(b==s1) { cnt++; minn=min(minn,j); } } if(cnt)cout<<cnt<<" "<<minn; else cout<<-1; return 0; } ``` 过了
by Baoqiancheng11 @ 2023-05-26 21:04:21


@[Max6700](/user/935012)
by Baoqiancheng11 @ 2023-05-26 21:04:43


@[Baoqiancheng11](/user/535149) !!!!!!!!!谢谢1!!thx · · · ~~话说是谁帮谁a?~~
by Max6700 @ 2023-05-26 21:07:23


~~a~~
by Baoqiancheng11 @ 2023-05-26 21:08:36


咳咳……接下来我发现了自己的代码中的一些问题,修改后。 ```cpp #include<bits/stdc++.h> using namespace std; string a,b,a2; int cnt,minn=214748364;//第一处 int main(){ cin>>a; for(int i = 0 ; i < a.length() ; ++i) if(a[i]>='A'&&a[i]<='Z') a[i]=a[i]+('a'-'A'); int i = 1,n=a.length(); while(cin>>b){ if(n==b.length()){ for(int j = 0 ; j < n ; ++j)//第二处,修改了循环变量 if(b[j]>='A'&&b[j]<='Z')//第二处,修改了循环变量 b[j]=b[j]+('a'-'A');//第二处,修改了循环变量 if(a==b){ ++cnt; minn=min(minn,i);//第三处 } } ++i; } if(cnt==0) cout<<-1<<endl; else cout<<cnt<<" "<<minn<<endl; return 0; } ``` [结果仍然不好](https://www.luogu.com.cn/record/111299856)
by Baoqiancheng11 @ 2023-05-26 21:11:58


```cpp #include<bits/stdc++.h> using namespace std; string a,b,a2; int cnt,minn=214748364;//第一处 int main(){ cin>>a; for(int j = 0 ; j < a.length() ; ++j)//这里也改了下 if(a[j]>='A'&&a[j]<='Z') a[j]=a[j]+('a'-'A'); int i = 1,n=a.length(); while(cin>>b){ if(n==b.length()){ for(int j = 0 ; j < n ; ++j)//第二处,修改了循环变量 if(b[j]>='A'&&b[j]<='Z')//第二处,修改了循环变量 b[j]=b[j]+('a'-'A');//第二处,修改了循环变量 if(a==b){ ++cnt; minn=min(minn,i);//第三处 } } ++i; } if(cnt==0) cout<<-1<<endl; else cout<<cnt<<" "<<minn<<endl; return 0; } ``` [还是不行](https://www.luogu.com.cn/record/111300191)
by Baoqiancheng11 @ 2023-05-26 21:14:44


|