社区讨论
60分求助
P1308[NOIP 2011 普及组] 统计单词数参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi7yua6h
- 此快照首次捕获于
- 2025/11/21 05:51 4 个月前
- 此快照最后确认于
- 2025/11/21 05:51 4 个月前
做法有点奇怪,根据当前读入的字符在线匹配,没有存正文,WA了4个点,求dalao指点
CPP#include<cmath>
#include<cctype>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int k,ans,ans1=-1,pos=-1,n;
//ans记录出现次数,ans1记录第一次位置,pos记录临时位置,k记录当前匹配的字符个数
char sam[12],tmp;
//sam存储需要查找的,tmp存储当前读入的字符
bool pd=true;
//判断是否匹配
int main(){
scanf("%s",sam);
for(int i=0;i<=strlen(sam)-1;++i){
if(isupper(sam[i])) sam[i]=tolower(sam[i]);
}
scanf("%c",&tmp);
while(tmp=='\n'||tmp=='\r') scanf("%c",&tmp);//读到第一个正文字符
while(tmp!='\n'&&tmp!='\r'){
if(tmp==' '){//一个单词结束,判断是否匹配
if(pd&&k==strlen(sam)) ans++;
pd=true;
k=0;
if(pos!=-1&&ans1==-1) ans1=pos;
}
else if(pd){
if(isupper(tmp)) tmp=tolower(tmp);
if(tmp!=sam[k]) pd=false,pos=-1,k=0;//不匹配,还原数据
else k++;//匹配,准备判断下一位
if(k==1&&ans1==-1) pos=n;//第一位匹配,记录位置
}
n++;
scanf("%c",&tmp);
}
if(ans) printf("%d %d",ans,ans1);
else printf("-1");
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...