Дана последовательность из m единиц и нулей. Рассмотреть отрезки этой последовательности (подпоследовательности идущих подряд чисел), состоящие
из одних нулей. Получить наименьшую из длин рассматриваемых отрезков.
объясните, как ее сделать?
Другие языки программирования и технологии
Задача на С. Дана последовательность из m единиц и нулей
Как то так.
int i,ind,indmin,cnt,cntmin;
bool zer;
zer=false;
cntmin=m+1;
for (i=0;i<m;i++){
if (a[i]==0){
if (zer){
cnt++;
} else {
zer=true;
ind=i;
cnt=0;
}
} else {
if (zer){
if (cnt<cntmin){
cntmin=cnt;
indmin=ind;
}
zer=false;
}
}
int i,ind,indmin,cnt,cntmin;
bool zer;
zer=false;
cntmin=m+1;
for (i=0;i<m;i++){
if (a[i]==0){
if (zer){
cnt++;
} else {
zer=true;
ind=i;
cnt=0;
}
} else {
if (zer){
if (cnt<cntmin){
cntmin=cnt;
indmin=ind;
}
zer=false;
}
}
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define END_SEARCH -1
#define END_LINE 0
char* length(char* seq, char* index, char value, int* min_len);
int min_length(char* seq, char value);
int main(void)
{
char sequence[] = "1000110000100111";
char desired_value = '0';
int ml = min_length(sequence, desired_value);
if (ml != END_SEARCH)
{
printf("Min Length: %d\n", ml);
}
else
{
printf("Not found!\n");
}
getchar();
return 0;
}
char* length(char* seq, char* index, char value, int* min_len)
{
char* cur = index;
int count = 0;
while (*cur != END_LINE)
{
if (*cur == value)
{
++count;
}
else if (count > 0)
{
break;
}
++cur;
}
if (count < *min_len)
{
*min_len = count;
}
return cur;
}
int min_length(char* seq, char value)
{
int size = strlen(seq);
int min_len = END_SEARCH;
if (0 != size)
{
_Bool exist = false;
char* cur = seq;
while (*cur != END_LINE)
{
if (*cur == value)
{
exist = true;
break;
}
++cur;
}
if (exist)
{
int len;
min_len = size;
do
{
len = min_len;
cur = length(seq, cur, value, &len);
if (len > 0 && len < min_len)
{
min_len = len;
}
if (*cur != END_LINE)
{
++cur;
}
}
while (*cur!= END_LINE);
}
}
return min_len;
}
#include <string.h>
#include <stdbool.h>
#define END_SEARCH -1
#define END_LINE 0
char* length(char* seq, char* index, char value, int* min_len);
int min_length(char* seq, char value);
int main(void)
{
char sequence[] = "1000110000100111";
char desired_value = '0';
int ml = min_length(sequence, desired_value);
if (ml != END_SEARCH)
{
printf("Min Length: %d\n", ml);
}
else
{
printf("Not found!\n");
}
getchar();
return 0;
}
char* length(char* seq, char* index, char value, int* min_len)
{
char* cur = index;
int count = 0;
while (*cur != END_LINE)
{
if (*cur == value)
{
++count;
}
else if (count > 0)
{
break;
}
++cur;
}
if (count < *min_len)
{
*min_len = count;
}
return cur;
}
int min_length(char* seq, char value)
{
int size = strlen(seq);
int min_len = END_SEARCH;
if (0 != size)
{
_Bool exist = false;
char* cur = seq;
while (*cur != END_LINE)
{
if (*cur == value)
{
exist = true;
break;
}
++cur;
}
if (exist)
{
int len;
min_len = size;
do
{
len = min_len;
cur = length(seq, cur, value, &len);
if (len > 0 && len < min_len)
{
min_len = len;
}
if (*cur != END_LINE)
{
++cur;
}
}
while (*cur!= END_LINE);
}
}
return min_len;
}
Похожие вопросы
- помогите решить задачу Во входном файле дана последовательность чисел , число (количество чисел в после
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- Вопрос программистам про единицы и нули
- Дана последовательность чисел : 3, 12, 6
- Пожалуйста помогите,C++ .Дана последовательность чисел.Найти в ней наименьшее число.
- Слабо написать программу по старинке, т.е. единицами и нулями?=)))
- Задача С++. Правильная скобочная последовательность.
- Помогите плизззз! задача в паскале! Дана строка символов. Группы символов, разделенные одним или несколькими пробелами
- задача в pascale. дан массив. Найти минимальный элемент и отсортировать все элементы стоящие после него.
- Помогите с задачей, пожалуйста! (Delphi) Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков "+" и "-