Задача: Нахождение кротчайшей группы элементов в строке

  • Автор темы xparen
  • Дата начала
Статус
Закрыто для дальнейших ответов.
X

xparen

Гость
#1
Помогите с решением задачи:
=================================================================
В строке, состоящей из групп нулей и единиц, найти и вывести на экран самую короткую группу.
=================================================================
Есть наработки, почти пустые (не знаю как написать ELSE в IF'e):
C++:
int i,d,n,k;
char st[11];
puts("Vvedite stroky: ");
gets(st);
d=strlen(st);
n,k=0;
for(i=0;i<=d;i++){
if((st[i]=='1'&&st[i+1]!='1')||(st[i]=='0'&&st[i+1]!='0'))
n,k=i;
else


}
for(i=n;i<=k;i++)
printf("samaja korotkaja gruppa %c:", st[i]);
getch();
 
X

xparen

Гость
#2
Всё я сам сообразил как написать) все равно спс...
Вот мой код, может кому понадобиться...
C++:
int j,k,d,s1,s2,mas1[10],mas2[10],n1,n2,j1,k1;
char st[11];
puts("Vvedite stroky: ");
gets(st);
d=strlen(st);
j=n1=s1=0;
for(int i=0;i<=d;i++){
if(st[i]=='1')
s1++;
else{
if(s1!=0){
mas1[j]=s1;
j++;
n1++;
}
s1=0;
}
}
k=n2=s2=0;
for(int i=0;i<=d;i++){
if(st[i]=='0')
s2++;
else{
if(s2!=0){
mas2[k]=s2;
k++;
n2++;
}
s2=0;
}
}
j1=mas1[0];
for(j=0;j<n1;j++){
if(mas1[j]<j1)
j1=mas1[j];
}
k1=mas2[0];
for(k=0;k<n2;k++){
if(mas2[k]<=k1)
k1=mas2[k];
}
puts("min gruppa edinic: ");
for(int s=1;s<=j1;s++)
printf("1");
puts("\nmin gruppa nulej: ");
for(int s=1;s<=k1;s++)
printf("0");
getch();
return 0;
 
Статус
Закрыто для дальнейших ответов.