Форум программистов, компьютерный форум CyberForum.ru

Палиндром. Почему WA1? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Storage durations http://www.cyberforum.ru/cpp-beginners/thread1787259.html
Страшно обилие реализаций абстракции и правил их применения :) Лямбды, насколько я помню - это объекты (анонимные функтоуры?), создаются без нью, живут на стеке, делита не требуют... Или я все спутал с прямым углом? По мотивам этой темы http://www.cyberforum.ru/cpp-beginners/thread1786764.html создана новая, т.к. там обсуждение ушло за рамки вопроса ТС
C++ Множественное наследование Доброго времени суток. Есть ряд операций. Логически операции делятся на группы ( к примеру, запрос, ответ, чтение из буфера и .п.). В зависимости от группы, появляется специализация ( у всех операций есть общие черты (наличие имени операции), общий метод, но у каждой группы есть свои спец. методы...к примеру, сформировать запрос). В двух разных местах кода нужно обращаться к классам , как к... http://www.cyberforum.ru/cpp-beginners/thread1787242.html
Полицейские-рекруты C++
Недавно в вашем городе открылось отделение полиции. Сейчас идет набор кадров для работы в новом отделении. А тем временем, преступления все совершаются в городе. Достоверно известно, что один полицейский может расследовать только одно преступление за всю свою жизнь. Если преступление произошло в тот момент, когда в отделении полиции не было ни одного незанятого преступлениями полицейского, то...
Найти число, не входящее в заданную последовательность натуральных чисел C++
Прошу помочь решить. Задано число N и последовательность из N-1 натуральных чисел. Все числа лежат в диапазоне и не повторяются. Это означает, что существует единственное число из , которого нет в последовательности. Найти его. Для полного балла найдите линейное решение (количество действий пропорционально N, а не, скажем, квадрату N) Вход 7 6 1 2 5 7 4 10 2 3 4 1 8 9 5 6 10
C++ Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз http://www.cyberforum.ru/cpp-beginners/thread1787232.html
Циклическим сдвигом вправо последовательности называется последовательность, получаемая из исходной перемещением последнего элемента в начало. Заданы числа N и k и последовательность целых чисел длины N. Вывести результат последовательного применения циклического сдвига вправо данной последовательность ровно k раз. Вход 5 2 1 2 3 4 5 6 1 7 1 7 2 6 1 5 5
C++ Распечатать все индексы вхождения числа х в последовательность а, начиная с последнего Задана длина N последовательности целых чисел a и сама последовательность. После этого задается некоторое число х. Распечатать все индексы вхождения числа х в последовательность а, начиная с последнего. Если искомый элемент в последовательности вовсе отсутствует, вывести -1. В этой задаче элементы нумеруются с единицы! Вход 5 1 2 3 4 5 2 10 1 2 3 4 5 6 1 1 2 1 1 подробнее

Показать сообщение отдельно
Максим3456
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
29.07.2016, 15:25     Палиндром. Почему WA1?
Одно из известных развлечений со словами - составление палиндромов. Палиндромом называется предложение, которое, после удаления из него всех пробелов и знаков препинания, читается одинаково справа налево и слева направо. Создатели одного известного текстового редактора пишут новую версию модуля для проверки орфографии. Они хотят реализовать возможность вывода подсказки для пользователя на тот случай, если он допустил опечатку при наборе какого-нибудь палиндрома. Конечно же, они решили обратиться именно к вам.

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

Входные данные

Во входном файле INPUT.TXT содержится заданная строка. Гарантируется, что она содержит хотя бы одну букву. Длина строки не превосходит 105.

Выходные данные

В первой строке выходного файла OUTPUT.TXT выведите YES, если строка может быть получена каким-нибудь из описанных выше преобразований из некоторого палиндрома, и NO в противном случае. В случае положительного ответа во второй строке выведите какой-нибудь из палиндромов, в которых мог допустить опечатку пользователь.

Примеры

№ INPUT.TXT OUTPUT.TXT
1 Never odd or even YES
NeVErODDoREVen
2 Eat it! NO
3 Mums are not set as a test on Erasmus. YES
Sums are not set as a test on Erasmus.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <cstdlib>
#include <string>
#include <cstdlib>
using namespace std;
string k;
string obr(string s)
{
  long long int i=0;
  while(s.length()!=i)
   {
    s[i]=tolower(s[i]);
    if(s[i]<'a' || s[i]>'z') 
    {
      s.erase(i,1);
    }
      else i++;
   }
   return s;
}
 
int pal(string s)
{
  long long int i=0,y=1,x;
  x=s.length();
  while((i<x/2) && (y==1))
  {
    if(s[i]!=s[x-i-1]) y=0;
    i++;
  }
  return y;
}
 
int zam(string s)
{
   string t;
   long long int i,x,y=0;
   x=s.length();
   t=s;
   for(i=0;i<x/2;i++)
    {
      s[i]=s[x-1-i];
      if(pal(s)==1) {y=1; k=s; break;}
      s=t;
    }
  return y;
}
 
int vir(string s)
{
    long long int i,x;
    int y=0;
    x=s.length();
    string t;
    t=s;
    for(i=0;i<s.length();i++)
   {
    s.erase(i,1);
    if(pal(s)==1) {y=1; k=s; break;}
    s=t;
    }
return y;
}
int main() {
  
  string s;
  getline(cin,s);
  s=obr(s);
   if(s.length()==0)
   {
    cout<<"NO";
   }
   else if(s.length()==1) 
  { cout<<"YES"<<endl;
    cout<<s;
  }
  else if(zam(s)==1) 
  { cout<<"YES"<<endl;
    cout<<k;
  }
  else if(vir(s)==1) 
   { cout<<"YES"<<endl;
    cout<<k;
  }
  else cout<<"NO";
 
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru