Как найти, в какой позиции встречается слово в строке на языке Си?

#arrays #c

Вопрос:

  1. Утверждение :У вас есть N строк, и длина каждой строки равна. Вы должны сделать все строки равными, если это возможно. Одним движением вы можете выбрать любую строку, удалить первый символ и добавить его в конец строки. Вы можете выполнять эту операцию много раз. Каково минимальное количество операций, которые необходимо выполнить, чтобы сделать все строки равными? Например , если у вас есть строка abcdef , одним движением вы можете преобразовать ее в строку bcdefa .
  2. Формат вывода: Выведите минимальное количество ходов, необходимое для того, чтобы все строки были равны, или выведите -1, если нет решения.
  3. Ограничения : 1 <=T<= 10 : 1 <=N<= 50 : 1 <=str[I]

Я подумал о том, чтобы объединить основную строку, а затем сравнить подстроку, чтобы сначала найти, где она возникает. Но я не могу понять, как найти первое происшествие. В то время как в C .find() можно использовать, как насчет в C?

Я использовал 2D-массивы для ввода n-го числа массивов. Я использовал еще один 2D-массив для хранения связанных строк. Я не могу двигаться дальше, может кто-нибудь, пожалуйста, помогите мне, как я могу решить эту проблему?

 #include <stdio.h>
#include <string.h>
  
int main() {
    int t;
    scanf("%d", amp;t);
    getchar();
    while (t--) {
        int i, n, j, flag, count;
        scanf("%d", amp;n);
        char str[n][51];
        char con[n][102];
        for (i = 0; i < n; i  ) {
            scanf("%s", amp;str[i]);
        }
        for (i = 0; i < n; i  ) {
            strcat(con[i], str[i]);
        }
        for (i = 0; i < n; i  ) {
            strcat(con[i], str[i]);
        }
    }
    return 0;
}
 

Комментарии:

1. Вы слышали об strstr этом и помогает ли это в вашем случае?

2. Действительно, используйте strstr . Если вам нужна помощь в решении головоломки в целом, пожалуйста, задайте более конкретный вопрос.