先输入字符串个数,再输入各个字符串中单词个数,求各字符串中的sheep个数,区分大小写。
输入样例:
3
5
sheep sheeps shep shepr shepp
7
sheep SHEEP Sheep sheep shepr sheer sherp
3
sheep sheep sheep…
样例输出:
case1:this list contains 1 sheep
case2:this list contains 2 sheep
case3:this list contains 2 sheep
思路:由于最后要计算个数,所以设定函数返回值为int,当单次执行成功时设定flag标记为1,失败则为0。最后统计flag总数即为答案。
#include <iostream>
#define Maxsize 10000
using namespace std;
int sheepNumber(char *str){
int flag = 1;
char *unit="sheep";
for(int i = 0;i<5;i++){//i的值设置为5,因为超过该长度的会被主代码中的剪枝条件剪去。
if(unit[i]!=str[i]){
flag=0;
break;//有一个不匹配直接跳出循环,减少时间复杂度。
}
}
return flag;
}
int main(){
int num;
int inWord;
int index;
cin>>num;
for(int i = 0;i<num;i++){
cin>>inWord;
index = 0;
while(inWord--){
char str[Maxsize];
cin>>str;
if(strlen(str)!=5){//剪枝条件
continue;
}
index+=sheepNumber(str);
}
cout<<"case"<<i+1<<":this list contain "<<index<<" sheep"<<endl;
}
return 0;
}
按照输入样例测试: