Неизвестно неизвестные тестовые примеры для решения проблемы фракций?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Неизвестно неизвестные тестовые примеры для решения проблемы фракций?

Сообщение Anonymous »

Я пытался решить: https://open.kattis.com/problems/fixing ... nsобразное описание проблемы. И Internet ™ нашел несколько отличных способов сделать это проще. Взгляните на следующие истинные уравнения:
includegraphics output < /p>
Если существуют целые числа и полученные из и отмены одних и тех же цифр и с < /p>
в стандартной математике, вывод «возможна», а затем и. В противном случае, вывод «невозможно». < /P>
Если есть несколько допустимых решений, вы можете вывести какие -либо из них. /> 871 1261 13 39
возможно
87 261
Выборная вывода 3
123 267 12339 23679
Невозможный < /p>
< /blockquote>
Мой подход следующим образом: < /strong> < /p>


Учитывая a ′, c и d, мы знаем, что b ′ = (a ' * d) /c < /li>
Проверьте, можно ли внести b в b', удалив одни и те же цифры. < /li>
< /ul>
в c ++.#include
#include
#include
#include
#include
#include

using namespace std;

bool canTransform(const string &a, const string &b,
const string &a_tag, const string &b_tag) {
vector count_a(10, 0), count_a_tag(10, 0);
for (char c: a) count_a[c - '0']++;
for (char c: a_tag) count_a_tag[c - '0']++;

vector removed_count(10, 0);
for (int d = 0; d < 10; d++) {
removed_count[d] = count_a[d] - count_a_tag[d];
assert(removed_count[d] >= 0);
}

int n = (int) b.size(), m = (int) b_tag.size();

function dfs = [&](int i, int j, vector &removed) {
if (j == m) {
for (int k = i; k < n; k++) {
int dig = b[k] - '0';
if (++removed[dig] > removed_count[dig]) {
removed[dig]--;
return false;
}
}
for (int d = 0; d < 10; d++)
if (removed[d] != removed_count[d]) {
for (int k = i; k < n; k++) removed[b[k] - '0']--;
return false;
}
for (int k = i; k < n; k++) removed[b[k] - '0']--;
return true;
}
if (i == n) return false;

int dig_b = b - '0', dig_btag = b_tag[j] - '0';

if (removed[dig_b] < removed_count[dig_b]) {
removed[dig_b]++;
if (dfs(i + 1, j, removed)) return true;
removed[dig_b]--;
}

if (dig_b == dig_btag && dfs(i + 1, j + 1, removed)) return true;

return false;
};

vector removed(10, 0);
return dfs(0, 0, removed);
}

int main() {
long long a, b, c, d;
cin >> a >> b >> c >> d;

string a_str = to_string(a);
string b_str = to_string(b);
int n = a_str.size();

for (int mask = 0; mask < (1

Подробнее здесь: https://stackoverflow.com/questions/796 ... ns-problem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Неизвестно на правиле @tailwind CSS (неизвестные)
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Неизвестно на правиле @tailwind CSS (неизвестные)
    Anonymous » » в форуме CSS
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Неизвестно на правиле @tailwind CSS (неизвестные)
    Anonymous » » в форуме CSS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Неизвестно на правиле @applycss (неизвестно)
    Anonymous » » в форуме Javascript
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Дубликация «Неизвестно в правиле @Apply css (неизвестно)» ошибки в проекте vue.js
    Anonymous » » в форуме CSS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»