Перегляньте відео нижче, щоб дізнатися, як встановити наш сайт як веб-програму на головному екрані.
Замітка: Для цієї функції наразі потрібен доступ до сайту за допомогою вбудованого браузера Safari.
В одномерном массиве найти наибольшую по длине повторяющуюся последовательность символов. Заранее благодарен
То есть: в одномерном массиве найти наибольшую по длине непрерывную последовательность одинаковых символов. ТС, так будет звучать постановка задачи?
будет над чем подумать для повышения эффективности.
На вскидку тут 15-20 строчек кода от силы ))) Другое дело что ...
+1
struct Sequence
{
char c;
int pos;
int length;
};
Sequence findMax(char str[])
{
Sequence max;
max.c = 0;
max.length = 0;
max.pos = -1;
Sequence cur;
cur.pos = 0;
cur.length = 0;
cur.c = 0;
for(const char* p = str; *p; p++)
{
if(*p != cur.c)
{
if(cur.length > max.length)
{
max = cur;
}
cur.pos += cur.length;
cur.length = 0;
cur.c = *p;
}
cur.length++;
}
return max;
}
int main(int argc, char* argv[])
{
char str[] = "asddspppar";
Sequence max = findMax(str);
printf("%s\nchar=%c\tpos=%d\tlength=%d\n", str, max.c, max.pos, max.length);
return 0;
}
Это юмор или таки понял? Я ж не про поиск последовательности одинаковых букв. Могу сказать что меня редко понимают.. А писать подробно дурной тон..
эм... проверяйте, если у вас значение 0 то замените его на 2147483648,
после чего пройдитесь в конце по массиву и присвойте значениям 2147483648 значение 0. вариант калечный, но вероятность того, что в вашем массиве будет столь большое число практически нулевая
5 коп критики, если не возражаете ...
ОС в задании не оговорена ...
я к тому, что integer не всегда был 4-х байтным ...
и не обязательно будет таковым в дальнейшем ...
это теоретическая задача ... посему вероятность встречи такого числа равна вероятности встречи любого числа из диапазона int ...
const int max_val = 7;
int mas[] = {1,2,3,0,5,2147483648,0}; //при условии что int - 4-х байтное число
int counter = 0;
for(int i=0;i<max_val;i++)
{
if(mas[i] == 0)
{
counter++;
mas[i] = 2147483648;
}
}
SortMass(mas);
for(int i = max_val-1;i>=max_val - (counter +1); i--) //по поводу i>=max_val - (counter +1) не уверен.
{
mas[i] = 0;
}
Не буду создавать новую тему, прошу совета в решении задачи сортировки.
есть к примеру массив
int A[7] = {5, 15, 10, 16, 0, 0, 10};
необходимо его отсортировать по возрастанию, но чтоб нули были в конце, т.е.
5,6,10,10,16,0,0
Как задать правильно условие для нулей?
int compare( const void *arg1, const void *arg2 )
{
int a = *((const int*)arg1);
int b = *((const int*)arg2);
if(a == b) return 0;
if(a == 0) return 1;
if(b == 0) return -1;
return (a > b) ? 1 : -1;
}
int main(int argc, char* argv[])
{
int A[] = {5, 15, 10, 16, 0, 0, 10};
const int count = sizeof(A) / sizeof(int);
qsort( (void *)A, count, sizeof(int), compare );
return 0;
}