
12.01.2010, 15:08
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами:
10943066
Репутация:
1236
|
|
Код:
// s - pointer to block
// l - length of block
//
// ret: 0 - no serial '1' detected
// x - idx of first '1' (1-base)
int check_fragment(char *s, int l)
{
for(int i=0; i< l-1; i++)
if(s[i]=='1' && s[i+1]=='1')
return i+1; // avoid zerobase offset
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *s01 = "1110101010"; // source 0/1
const int block_len = 5; // N
int slen = strlen(s01);
int num_frags = 0, temp;
for(int i=0; i< slen; ){
if(strlen(&s01[i])<block_len)break;
temp = check_fragment(&s01[i], block_len);
if(temp==0){
i+= block_len;
num_frags++;
continue;
}
i+=temp;
}
printf("%d", num_frags);
return _getch();
}
те ес я правильно понял то в данном варианте
char *s01 = "1110101010"; // source 0/1
const int block_len = 5; // N
вывод должен быть равен 1, как он и есть собсна.
...ес прально понял =)
примерной такой вывод (N=5):
0000000000 - 2
1111111111 - 0
0000110000 - 2
1100000000 - 1
0000000011 - 1
1111110000 - 1
1101010110 - 1
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 12.01.2010 в 15:20..
|
|
|