SPOJ вопрос - что здесь не так? - PullRequest
2 голосов
/ 24 июня 2011

Я отвечал на этот спой вопрос: http://www.spoj.pl/problems/JAVAC/

Я закодировал представление в C ++. Я вставляю это ниже. Представление последовательно дает неправильный ответ. Я не могу найти тестовый случай, для которого это не удастся. Кто-нибудь может мне помочь?

Большое спасибо.

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

char *ans;

bool iscapital(char c)
{
  if(c >='A' && c <='Z')
    return true;
  else
    return false;
}

string translate(string current)
{ 
  ans = new char[2*current.length() + 1];
  int jflag = 0, cflag = 0,j = 0, i = 0;

  if(iscapital(current[0]))
  {
    return "Error!";
  }

  while(i < current.length())
  {
    if(current[i] !='_')
    {
      if(!(current[i] >= 'A' && current[i] <= 'Z'))
      {
    ans[j] = current[i];
    i++;
    j++;
      }
    }

    if(current[i] == '_')
    {
      if(jflag == 1)
    return "Error!";

      cflag = 1;
      i++;
      if(i < current.length())
      {
    //convert to capital
    if(iscapital(current[i]))
      return "Error!";

    ans[j] = (char)((int)current[i] - 32);
    i++;
    j++;
      }
    }

    if(iscapital(current[i]))
    {
      if(cflag == 1)
    return "Error!";

      jflag = 1;

      ans[j] = '_';
      j++;
      ans[j] = (char)((int)current[i] + 32);
      j++;
      i++;
    }
  }
  ans[j] = '\0';
  string ret = ans;
  return ret;
}



int main()
{

  string current;

  while(cin>>current)
  {
    cout<<translate(current)<<endl;
  }
  return 0;
}

1 Ответ

5 голосов
/ 24 июня 2011

Я не пробовал (никогда не использовал SPOJ), но возможно ли, что существуют другие недопустимые форматы? E.g.:

123asd

_asd

asd___a

Сейчас я возиться с вашим кодом, посмотрим, смогу ли я заставить его работать. Удачи!

РЕДАКТИРОВАТЬ: прошло! Попробуйте добавить следующее:

  1. Обнаружить ошибку, когда первая или последняя буква '_'

  2. Определить, есть ли последовательные '_' (например, 'a__b')

  3. Обнаружение других символов (например, 'adq21#')

Все три случая здесь должны быть ошибками. Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...