Patrice T
Цитата:
Я серьезно донно как улучшить это дальше
Что вы подразумеваете под словом "улучшить" ?
Насколько я понимаю, этот код не работает.
Это вызов, ваша задача-сделать правильный код.
Вы можете уменьшить отпечаток ноги:
Согласно ограничению:
1 ≤ T ≤ 20, так
int c2[10000],c1[10000];
может быть заменен на
int c2[20],c1[20];
и далее, вам не нужно хранить все шаблоны деревень, только один:
#include<stdio.h>
int main()
{
int c2[20],c1[20];
int i,k,j,T;
char s[100000];
scanf("%d",&T);
for(i=0;i<T;i++)
{
c1[i]=0;c2[i]=0;
scanf("%s",s);
for(j=0;s[j]!='\0';j++)
{
if(s[j]=='A')
c1[i]++;
else if(s[j]=='B')
c2[i]++;
else if(s[j]=='.')
{
for(k=j;;k++)
{
if(s[k]=='A')
{
c1[i]=c1[i]+(k-j);
break;
}
else if(s[k]=='B')
{
c2[i]=c2[i]+(k-j);
break;
}
}
}
}
}
for(i=0;i<T;i++)
{
printf("%d %d",c1[i],c2[i]);
}
}
Ваш код должен рухнуть на '..A..' и '..B..B..B..' и дать неправильные результаты на других.
Я думаю, что полное переписывание в порядке. Отладчик поможет вам понять, что не так в вашем коде.
Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя
отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков:
отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[
^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[
^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[
^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.