IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массивы, хм!...
vovsik
сообщение 2.06.2004 18:37
Сообщение #1





Группа: Пользователи
Сообщений: 6

Репутация: -  0  +


Не пойму. Вот задачка.
Дан неубывающий массив положительных чисел. найти наименьшее целое положительное число, не представимое в виде суммы нескольких элементов этого массива (каждый элемент массива может быть использован не более одного раза) .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 2.06.2004 18:57
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


А что конкретно не поймешь?
Как ее на паскале написать? Или мож на асме?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
virt
сообщение 2.06.2004 19:38
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


Код
{$A+,B-,D-,E+,F-,G-,I-,L-,N-,O-,P-,Q-,R-,S-,T-,V+,X+}
{$M 16384,0,655360}
program minnemogu;
const Max_Chislo=1000;
var i,j,n:word;
   a:array[1..64000]of byte;
   x:word;
   l:longint;
   Max_Summa:word;

begin
  fillchar(a,sizeof(a),0);
  read(n);
  Max_Summa:=0;
  for i:=1 to n do
  begin
     read(x);
     Max_Summa:=Max_Summa+x;
     a[x]:=a[x]+1;
  end;
  for i:=0 to Max_Summa-1 do
  begin
     if a[i]>1 then
        begin
           l:=longint(i)+j;
           if l<=Max_Summa then a[l]:=a[l]+1;
        end;
     for j:=i+1 to Max_Summa do
        if (a[i]>0) and (a[j]>0) then
        begin
           l:=longint(i)+j;
           if l<=Max_Summa then a[l]:=a[l]+1;
        end;
{      writeln(i);}
  end;
  for i:=1 to Max_Summa+1 do
     if a[i]=0 then break;
  writeln(i);
  readln;
end.


Вот вроде должно работать.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
vovsik
сообщение 2.06.2004 20:01
Сообщение #4





Группа: Пользователи
Сообщений: 6

Репутация: -  0  +


а Если я добавлю, что число действий - порядка размера массива? Что с этой шнягой делать?запарился совсем!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 3.06.2004 15:42
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

Репутация: -  0  +


Код

S=1;
for i := 1 to n do
begin
 if a[i] > S then
   break
 S := S + a[i]
end;
r := S

a - исходный НЕУБЫВАЮЩИЙ массив, n - его размер,
в r будет результат.

Сообщение отредактировано: zx1024 - 3.06.2004 15:43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 3.06.2004 19:30
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


оффтоп

Что-то тебя zx1024 давно видно не было??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 17:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"