![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
first_day |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
#include <iostream>
using namespace std;
int main ()
{
int n,m,a[10000],i,minim,j,num=0;
cin>>n>>m;
for(i=0;i<n;i++)
cin>>a[i];
while (m)
{
for(j=0,minim=a[0];j<n;j++)
if (minim>a[j])
{
minim=a[j];
num=j;
}
a[num]++;
m--;
}
cout<<a[num];
}
Поскажите, пожалуйста в чем ошибка. Мне нужно, чтобы заполнялись n элементов массива. Далее пока некоторое число m не станет равно нулю, нужно при каждом уменьшении m находить минимальное число в массиве и увеличивать его на 1. В конце вывести минимальное число в массиве. У меня же оно находит минимальное число и все время увеличивает только его... ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
num = 0 перед началом цикла for добавь...
|
first_day |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
num = 0 перед началом цикла for добавь... Спасибо, помогло. Теперь только лимит во времени при больших n и m... -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Насколько большими могут быть M и N? И какой лимит времени? Может быть есть другие способы решения задачи...
|
first_day |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Насколько большими могут быть M и N? И какой лимит времени? Может быть есть другие способы решения задачи... 1<=N<=10000, 1<=M<=1000000, элементы массива от 1 до 30000. Лимит 3 секунды. Да должно быть... Пересматривать все это "немного" не рацианально... Вот конечная версия программы: #include <iostream>
using namespace std;
int main ()
{
int n,m,a[10000],i,minim,j,num=0;
cin>>n>>m;
for(i=0;i<n;i++)
cin>>a[i];
while (m)
{
for(j=0,minim=a[0],num=0;j<n;j++)
if (minim>a[j])
{
minim=a[j];
num=j;
}
a[num]++;
m--;
}
for(j=0,minim=a[0];j<n;j++)
minim=min(minim,a[j]);
cout<<minim;
}
-------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
С такими значениями ты не уложишься в 3 секунды... Лучше сделай так: сортируешь исходный массив один раз любым способом, я для примера отсортировал "пузырьком" - и потом пробегаешь с начала массива до тех пор, пока текущий его элемент равен ПЕРВОМУ, увеличивая текущий и уменьшая m... Поскольку нет необходимости бегать по всему массиву, а пробежка будет только по его части - такой алгоритм может выиграть по скорости...
Тестировалось с закомментированными значениями, результаты совпадают с теми, которые выдает твоя программа... #include <iostream>
using namespace std;
int main ()
{
int n,m,a[10000],i,minim,j,num=0;
cin >> n >> m;
// n = 7; m = 23;
// int a[] = {1, 5, 3, 7, 2, 6, 4};
for(i = 0;i < n; i++) {
cin >> a[i];
}
// sort array once
for(i = 0; i < n; i++)
for(j = n - 1; j > i; j--) {
if(a[j - 1] > a[j]) {
int T = a[j - 1]; a[j - 1] = a[j]; a[j] = T;
}
}
/*
for(i = 0; i < n; i++) {
cout << a[i] << " ";
}
*/
while(m) {
int T = a[0];
for(i = 0; i < n && T == a[i]; ++i) {
a[i] += 1; m -= 1;
if(!m) break;
}
}
cout << endl << a[i];
return 0;
}
|
first_day |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
А что означает (!m)?
Спасибо большое, завтра(или точнее сегодня ![]() ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата А что означает (!m)? Означает (m == 0) |
first_day |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Все получилось
Единственное я сделал сортировку "метод последовательного поиска минимумом" (при большом кол-ве элементов массива этот метод работает же быстрее "пузырька"?) и в конце нужно было еще раз найти минимальный элемент массива и уже его выводить. Еще раз спасибо. ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
oksana8119 |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 1 Пол: Женский Реальное имя: oksana Репутация: ![]() ![]() ![]() |
Можеш мне помочь с масивами. Туго йдут.
вот мая задача. Я решила но неверно додоатні елементи масиву занести один за одним в інший масив. Помоги ![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 8:53 |