Реализация оператора приращения ++

У меня есть строка, в которой я должен подсчитать минимальное количество символов для удаления, так что после модификации нет двух соседних символов, например, если бы мне дали строку, такую ​​как RRGB, мой код должен вывести 1 (удалить дубликат R) аналогичным образом и для RRRRR его 4 (удалить 4 лишних R)

ссылка на вопрос:(на всякий случай я прилагаю ссылку, если она не ясна) http://codeforces.com/problemset/problem/266/A

код, который я первоначально написал, был:

#include<stdio.h>
int main(void){
   char k,s[51];
   int n,l,i,c=0;
   scanf("%d",&n);
   scanf("%s",s);
     for(i=1;i<n+1;){
       while(s[i++]==s[i-1]); /*LINE OF INTEREST */
       ++c;
       }
       printf("%d",n-c);
     return 0;
 }

В то время как заявление было от другой реализации ребят для другой проблемы. Переходя к вопросу

оператор while while(s[i++]==s[i-1]); приводит к ошибке сегментации (дамп ядра), а (s[i-1]==s[i++]) работает отлично и дает правильный ответ на мое решение

насколько они разные?

ПРИМЕЧАНИЕ: отправка других парней (Принятая отправка на Codeforces) тоже не сработала и привела к бесконечному циклу, как мой код, и при изменении на while(s[i-1]==s[i++]) снова работала нормально, как мой код так что-то вроде того, что раньше работало на старом компиляторе C, или это не имеет к этому никакого отношения, и оба утверждения разные?

0 ответов

Другие вопросы по тегам