[编程题]BFS
  • 热度指数:16417 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}Bob 在学习了 DFS 后,自己又发明了一种新的搜(luan)索(gao)方法,叫做 BFS(Bob First Search)。
\hspace{15pt}这种搜索被定义为:在一个字符串中,从前向后查找子串 "Bob" 第一次出现的位置(不区分大小写)。

输入描述:
\hspace{15pt}在一行输入一个不含空格的字符串 S,其长度为 |S|,满足 \left(1 \leqq |S| \leqq 100\right)


输出描述:
\hspace{15pt}输出一个整数,表示子串 "Bob" 第一次出现的位置(下标从 0 开始)。 
\hspace{15pt}如果子串未出现,则输出 -1
示例1

输入

Bobob

输出

0

说明

字符串 "Bobob" 中开头即出现 "Bob",起始索引为 0
示例2

输入

bobby

输出

0

说明

字符串 "bobby" 中开头即出现 "bob",起始索引为 0
示例3

输入

body

输出

-1

说明

字符串 "body" 中不包含子串 "Bob"(忽略大小写),因此输出 -1
#include<stdio.h>
#include<string.h>
int main()
{
    int len;
    char a[101];
    scanf("%s",a);
    len=strlen(a);
    int found=0;
    for(int i=0;i<len-2;i++)
    {
        if((a[i]=='b'||a[i]=='B')&&(a[i+1]=='o'||a[i+1]=='O')&&(a[i+2]=='b'||a[i+2]=='B'))
        {
        printf("%d",i);
        found=1;
        break;
        }}
        if(found==0)
        printf("-1");
       
   
    return 0;
}
发表于 2025-12-18 21:20:13 回复(0)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
    char s[101];
    char t[4], f = 0;
    scanf("%s", s);
    int len = strlen(s);
    for (int i = 0; i <= len - 3; i++) {
        if (tolower(s[i]) == 'b' && tolower(s[i + 1]) == 'o' &&
                tolower(s[i + 2]) == 'b') {
            printf("%d", i);
            f = 1;
            break;
        }
    }
    if (!f)printf("-1");
    return 0;
}
发表于 2025-12-17 15:11:03 回复(0)
#include <stdio.h>
#include <string.h>
int main() {
    char str[101];
    scanf("%s", str);
    if (strlen(str) <= 2) {
        printf("-1");
    } else if (strlen(str) > 2) {
        int num = -1;
        for (int i = 0; i <= strlen(str) - 3; i++) {
            if ((str[i] == 'B' || str[i] == 'b')
                    && (str[i + 1] == 'o' || str[i + 1] == 'O')
                    && (str[i + 2] == 'b' || str[i + 2] == 'B')) {
                num = i;
                break;
            }
        }
        printf("%d", num);
    }
    return 0;
}


注意一下&&跟||的优先级,&&先进行判断,所以要用下(),还有就是要讨论一下这个字符串的长度,小于3的直接输出-1.
没了。
🐒🐒🐒🐒🐒🐒
发表于 2025-12-14 09:29:48 回复(0)
#include <stdio.h>
#include <string.h>
int main()
{
    char a[100];
    scanf("%s",a);
    int len=strlen(a);
    int i=0;
    while(i<len)
    {
        if((a[i]=='B'||a[i]=='b')&&(a[i+1]=='o'||a[i+1]=='O')&&(a[i+2]=='b'||a[i+2]=='B'))
        {
        printf("%d",i);
        break;
        }
        i++;
    }
    if(i==len)
    printf("-1");  
}
发表于 2025-10-14 20:10:02 回复(0)