• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Помогите с 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:
 
Мы в соцсетях:

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