Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2008, 15:58   #1
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию 2 сложные задачи

Задача 1 "Спекулянт"!
З детства нам рассказывали (а вам, ученикам, и до сих пор рассказывают), что наше благосостояние зависит от того, насколько мы будем работать.
Это была теория, а практика показала, что наше благосостояние зависит не от интенсивности нашей работы, а от курса доллара или прыжков цен на нефть на мировом рынке.
Рассмотрим валютного спекулянта по имени Баксик, который старается заработать на экономическом льде.
В его стране есть N мост в которых действуют обменные пункты валют.
Баксік аналитически просчитал которые должными быть курсы валют в этих городах на D дней вперед.
Он также имеет информацию о ценах проезда по каждой из дорог между городами (между каждое 2 городами есть дорогая).
По законам его страны, один человек в день может осуществить лишь одну валютную операцию. Поэтому Баксик может осуществить обмен лишь в одном городе страны, за один день.
В начале экономического кризиса, баксік имеет UAH гривен, и USD долларов.
За день он может переехать в любой другой город и осуществить там обмен валют, или остаться в городе и осуществить обмен валют, или остаться в городе и не осуществлять обмена валют. Вам необходимо сосчитать сколько максимально денег в гривнах может насобирать Баксик через D дней.
Входные данные:
В первой строке стандартного входного потока записанные числа N, D, UAH, USD. (1<=D<=100), (1<=N<=100) , (0<=UAH<=10000) , (0<=USD<=10000).
Следующие N строк содержат по N чисел и описывают цены проезда по соответствующим дорогам. (число в i- му строке и j- му столбику показывает цену переезда по прямой дороге из города i в город j).
Каждый со следующих N строк содержит по D пар действительных чисел - курсы валют для соответствующих городов на все дни кризиса. Первое число из каждой пары показывает за сколько гривен купят за 1 доллар, второе число с пары показывает - за сколько гривен продадут 1 доллар. Второе число в паре всегда не меньше от первого.
Баксик в начале кризиса находится в городе с номером 1.
Исходные данные:
В первую строку запишите максимальную сумму в гривнах (округливши до двух знаков после комы), которую может насобирать Баксик в конце кризиса.
В каждом со следующих D строк запишите информацию о деятельности Баксика за каждый день в следующем формате:
первое число строки содержит номер города в которое переместился (или в котором остался) Баксик.
второе число показывает количество дорог - R - которую он проехал для этого перехода.
Следующие R чисел показывают номера міс из-за которых он проезжал (в порядке проезда, не отмечая первого города).
Последние два числа показывают сколько гривен и долларов он продал в этом городе.
Пример входных данных:
3 1 100 100
0 3 1
3 0 1
1 1 0
5.00 6.00
7.00 8.00
5.00 6.00
Пример исходных данных (внимание, пример может быть не оптимальным!!!):
798.00
2 2 3 2 0 100
Оценивание: ваша программа принесет вам тем более баллов, чем больше денег насобирает ваш Баксик в сравнении с другими...
Примечание: Обмен всегда осуществляется только к копейкам (центов). То есть если 1 доллар продается за 3 гривне, то Баксик имея 100 гривен может приобрести лишь 33.33 доллары, заплатив при этом 99.99 гривен, а одну копейку уже разменять не можем.
Задача 2, игра "Судоку"!
Поле для игры в судоку имеет размер 9хх.9 клеточек и условно разбитое на 9 квадратов размером 3хх.3.
Каждая клеточка есть или пустой, или содержит число от 1 до 9.
Пример:
389|7..|2..
672|.5.|.1.
.14|6.9|..3
------------
23.|5..|871
85.|.37|.49
497|81.|3.5
------------
.65|482|13.
1.3|.7.| 46.
74.|1.3|59.
Вам необходимо расставить в пустые клеточки числа от 1 до 9 так, чтобы
1) в каждой строке числа не повторялись
2) в каждом столбике числа не повторялись
3) в каждом с 9- ты условных квадратов числа не повторялись
Для вышеприведенного примера ответ следующий:
389|741|256
672|358|914
514|629|783
------------
236|594|871
851|237|649
497|816|325
------------
965|482|137
123|975|4 68
748|163|592
Входные данные:
В стандартном входном потоке записанные 9 строк по 9 чисел. (числа разделены пропусками). Пустая клеточка обозначена числом 0. Нулей (пустых клеточек) будет не больше чем 29
Исходные данные:
в стандартный исходный поток запишите ответ к заданному судоку - 9 строк по 9 чисел в каждом (разделенные пропусками!!!)
Пример входных данных:
3 8 9 7 0 0 2 0 0
6 7 2 0 5 0 0 1 0
0 1 4 6 0 9 0 0 3
2 3 0 5 0 0 8 7 1
8 5 0 0 3 7 0 4 9
4 9 7 8 1 0 3 0 5
0 6 5 4 8 2 1 3 0
1 0 3 0 7 0 4 6 0
7 4 0 1 0 3 5 9 0
Пример исходных данных:
3 8 9 7 4 1 2 5 6
6 7 2 3 5 8 9 1 4
5 1 4 6 2 9 7 8 3
2 3 6 5 9 4 8 7 1
8 5 1 2 3 7 6 4 9
4 9 7 8 1 6 3 2 5
9 6 5 4 8 2 1 3 7
1 2 3 9 7 5 4 6 8
7 4 8 1 6 3 5 9 2
Snake08 вне форума Ответить с цитированием
Старый 11.11.2008, 21:05   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

решение задачи судоку
sudoku.rar
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 11.11.2008, 22:24   #3
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

Чото я не нашол там решение!
Можеш написать!
Snake08 вне форума Ответить с цитированием
Старый 11.11.2008, 23:28   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

решение чего?
алгоритм решения судоку используемый в программе очень прост.

изначально допустимы все комбинации (что и демонстрирует программа)везде полный набор цифр 1..9

при вводе ненулевой цифры данная клетка определяется однозначно (остается одна цифра). Значит эту цифру исключаем из всех зависимых мест(квадрат, строка, столбец). Если при этом какая-либо клетка определится однозначно.запускаем процедуру исключения для этой новой клетки. По исчерпании ввода остановка.

Код:
procedure TForm1.SETNUMBER(sender: TPanelSudoku; num: TNUM);
var
  j: integer;
begin
//  TPanel(sender).Caption:=inttostr(num);
  if not (num in sender.avible) then system.Exit;
  sender.avible:=[num];
  self.FormatCaption(sender);
  for j:=1 to 81 do
  begin
    if ar[j]=sender then continue;
    if ar[j].ncol=sender.ncol then self.RemoveNum(ar[j],num);
    if ar[j].nrow=sender.nrow then self.RemoveNum(ar[j],num);
    if ar[j].nsqr=sender.nsqr then self.RemoveNum(ar[j],num);
  end;
end;

procedure TForm1.REmoveNum(sender: TPanelSudoku; num: TNUM);
var
  j: integer;
begin
  if not (num in sender.avible) then system.Exit;
  Exclude(sender.avible, num);
  self.FormatCaption(sender);
  for j:=1 to 9 do
    if sender.avible=[j] then
       SETNUMBER(sender,j);
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.11.2008 в 23:35.
evg_m на форуме Ответить с цитированием
Старый 16.11.2008, 21:12   #5
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

Ты не мог бы написать задачу полностю! Я тебя очень прошу!
Ато я в етих задачках дуб-дерево!

Помогите мне пожалуста!

Последний раз редактировалось Alex21; 17.11.2008 в 07:39.
Snake08 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложные цикли и разветвления. Artimbulidor Помощь студентам 4 06.11.2008 11:58
Сложные SQL запросы или хранимые процедуры! Killer_djon БД в Delphi 17 25.03.2008 12:10
задача на сложные действия со строками Converse Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2008 07:34