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

Написать программу, которая определит, сколькими способами он может попасть в магазин, пройдя ровно K шагов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу разобраться с чтением из файла http://www.cyberforum.ru/cpp-beginners/thread1035604.html
#include "stdafx.h" #include <iostream> #include <conio.h> #include <stdio.h> #include <time.h> #include <fstream> int n,m,i,j,g; FILE *f;
C++ написать программу, которая. Будет создавать текстовый файл и отобразить его содержимое написать программу, которая. Будет создавать текстовый файл и отобразить его содержимое. http://www.cyberforum.ru/cpp-beginners/thread1035599.html
C++ разработать программу создания сложной структуры на примере
1. создать сложную структуру на примере школы 2. создать сложную структуру на примере завода 3. создать сложную структуру на примере магазина 4. создать сложную структуру на примере библиотеки
С++: подсчитать количество знаков и вывести самое большое значение C++
Ребята, помогите пожалуйста. Задача такая : нужна программа, подсчитывающая количества знаков ":", ";", "," и вывести количество повторений того знака, который повторяется (простите за тавтологию) чаще всего. Беда в том, что программа выводит ответ только,если чаще всего повторяется ":". Помогите найти ошибку~ Код программы : #include "stdafx.h" #include "iostream" #include "conio.h"...
C++ Описать рекурсивную функцию вычисления значения по формуле http://www.cyberforum.ru/cpp-beginners/thread1035580.html
Рекурсия
C++ Описать рекурсивную функцию Root(X, K, N) Описать рекурсивную функцию Root(X, K, N) вещественного типа, находящую приближенное значение корня K-ой степени из числа X по формуле: Y(0)=1 y(n+1)=y(n)-(y(n)-x/(y(n))^k-1)/k Параметры функции – X>0 – вещественное число; K>1, N>0 – целые числа. Найти приближенное значение корня K-ой степени из числа X с использованием цикла. подробнее

Показать сообщение отдельно
CrazzyBeer
 Аватар для CrazzyBeer
3 / 3 / 2
Регистрация: 24.03.2014
Сообщений: 65
29.08.2014, 14:45     Написать программу, которая определит, сколькими способами он может попасть в магазин, пройдя ровно K шагов
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var n,k,f:int64;
procedure c(i,t:int64);
 begin
  if (i=0)  then begin if t=k then inc(f); exit; end;
  if t+i<=k then c(i+1,t+1) else exit;
  if t<k then c(i-1,t+1) else exit;
 end;
begin
assign(input, 'input.txt'); reset(input); 
assign(output, 'output.txt'); rewrite(output);
read(n,k);
c(n,0);
write(f);
end.
Вот попытка решения, но она проваливается по времени. Тоже интересен метод решения (чтобы работал быстро с большими ограничениями)

Добавлено через 1 час 35 минут
Pascal
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
var n,k,f:int64;
    a:array[0..37,0..50] of integer;
procedure c(i,t,p:int64);
 begin
  p:=f;
  if (i=0)  then begin if t=k then inc(f); exit; end;
  if t+i<=k then
    begin
     if a[i-1,t+1]=0 then c(i-1,t+1,p) 
       else if a[i-1,t+1]>0 then inc(f,a[i-1,t+1]) 
    end;
  if t+i<=k then
    begin
     if a[i+1,t+1]=0 then c(i+1,t+1,p) 
       else if a[i+1,t+1]>0 then inc(f,a[i+1,t+1]) 
    end;
  if p<>f then a[i,t]:=f-p else a[i,t]:=-1;
 end;
begin
assign(input, 'input.txt'); reset(input); 
assign(output, 'output.txt'); rewrite(output);
read(n,k);
c(n,0,0);
write(f);
end.
Пожалуйста. Решение прошло все тесты.
Используется метод ленивой динамики. Для каждой вершины запоминается, сколько раз можно из неё попасть в вершину 0 с данным количеством шагов
 
Текущее время: 14:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru