• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите с Memset

  • Автор темы Vadik(R)
  • Дата начала
V

Vadik(R)

Решаю задачи на динамическое программирование, в общем есть код:
Код:
#include <iostream>

using namespace std;

int main() {
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int i,j,n,a[1000],dp[1000];
cin >> n;
for (i=0; i<n; i++)
cin >> a[i];
memset(dp, 1, sizeof dp);
for (i=1; i<n; i++)
for (j=0; j<i; j++)
if (a[j]<a[i] && dp[j]>=dp[i])
dp[i]=dp[j]+1;
cout << dp[n-1]+1 << endl;
return 0;
}
Так вот, если я мемсетом хочу забить массив единицами, то эта вешь не работает, она заполняет его милиардными числами. На отрицательных числах все работает нормально. Пробовал ещё писать вот так:
Код:
memset(dp, (int) 1, sizeof dp);
memset(dp, int (1), sizeof dp);
Но это все равно не помогло. Как тогда надо написать мемсет, чтобы она ИНТОВСКИЙ массив заполнила единицами?
 
E

European

memset заполняет память побайтно, т.е. элементы вашего массива заполняются 16-ричными значениями 0x01010101. При переводе в целое получается 16843009.
Вот есть похожая тема на CodeGuru:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!