19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
1

Оптимизировать решение задачи о “двоичных строках”

12.10.2014, 21:03. Показов 1002. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условия задачи на приложенном скрине. Решение не проходит по времени несколько последних коварных тестов, очень-очень долго считает для n и k 100 и 100.
Сначала хотел автоматически генерить строку состоящую из k единиц, но рекурсия считает начиная с нулей, поэтому с таким костылем надо все переделывать, видимо. Или есть более разумные решения?
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
#include <iostream>
 
using namespace std;
 
unsigned int n, k;
 
void gen(string s, unsigned int g)
{
    if (s.length() < n)
    {
        gen(s + '0', g);
        gen(s + '1', g + 1);
    }
    else if (g == k)
        if (s.length() == n)
            cout << s << endl;
}
 
int main()
{
    cin >> n >> k;
    gen("", 0);
 
    return 0;
}
Миниатюры
Оптимизировать решение задачи о “двоичных строках”  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2014, 21:03
Ответы с готовыми решениями:

Как можно оптимизировать решение данной задачи?
Всем привет! Есть задачка, вот условие: Напишите функцию, которая принимает в качестве...

Переворот строки: оптимизировать решение
Хотелось бы узнать указания по коду: Что можно укоротить, сделать проще. var len, i: byte;...

Графика - оптимизировать код под другие задачи
текст программы Uses program8;{вызов модуля} Var T:real; p:integer; Begin ...

задачи с двумерным массивом, решение должно быть похоже на решение 8-ми классника
Без рандома, все вводится с клавиатуры, без Inc, без Break и т.д. 1)Сколько учеников не имеет в...

4
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.10.2014, 21:15 2
ты зачем-то ставишь единицу, даже если g == k, т.е. дальше пойдут бессмысленные ветки.

ну и замени endl на '\n';
1
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
12.10.2014, 21:32  [ТС] 3
Цитата Сообщение от SlavaSSU Посмотреть сообщение
ты зачем-то ставишь единицу, даже если g == k, т.е. дальше пойдут бессмысленные ветки.
Тогда выводится ровно (1/k) ответа:
0011
0101
1001


Цитата Сообщение от SlavaSSU Посмотреть сообщение
ну и замени endl на '\n';
В этом есть практический смысл? Быстрее работает?
Эстетичнее выглядит endl
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.10.2014, 21:42 4
Лучший ответ Сообщение было отмечено Wiiiiijjj как решение

Решение

C++ (Qt)
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
#include <iostream>
#include <string>
 
using namespace std;
 
#define endl '\n'
 
int n, k;
 
void rec(string s, int cnt)
{
    if(s.length() == n)
    {
        if(cnt == k)
            cout << s << endl;
        return;
    }
 
    if(n - s.length() < k - cnt)
        return;
 
    if(cnt > k)
        return;
 
    rec(s + '0', cnt);
    rec(s + '1', cnt + 1);
 
    return;
}
 
int main(){
 
    cin >> n >> k;
 
    rec("", 0);
 
    return 0;
}
1
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
12.10.2014, 21:55  [ТС] 5

Не по теме:

Цитата Сообщение от SlavaSSU Посмотреть сообщение
#define endl '\n'
Я просто твой кумир. :D



Добавлено через 2 минуты

Не по теме:

Да, а вопрос не саркастического характера: почему все же всеми юзается '\n'?

0
12.10.2014, 21:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2014, 21:55
Помогаю со студенческими работами здесь

Найти решение уравнения, изоклинную и интегральную кривые, решение задачи Коши
Помогите пожалуйста! а) Найти решение вида: x=a,y=b,y=kx+b y'=\frac{y^2-4}{xy},\\ y'=x-y+2 б)...

Аналитическое решение решение краевой задачи для ОДУ второго порядка
Здравствуйте! Задача: Аналитически найти частное решение ОДУ. Изначально в частных производных, но...

Найдите общее решение и решение задачи Коши для ОДУ
Найдите общее решение и решение задачи Коши для ОДУ (с разделяющимися переменными, с однородной...

Найти общее решение или решение задачи Коши
вот пример:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru