Помогите с Memset

Тема в разделе "C и С++ FAQ", создана пользователем Vadik(R), 14 янв 2010.

  1. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Решаю задачи на динамическое программирование, в общем есть код:
    Код (Text):
    #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;
    }
    Так вот, если я мемсетом хочу забить массив единицами, то эта вешь не работает, она заполняет его милиардными числами. На отрицательных числах все работает нормально. Пробовал ещё писать вот так:
    Код (Text):
    memset(dp, (int) 1, sizeof dp);
    memset(dp, int (1), sizeof dp);
    Но это все равно не помогло. Как тогда надо написать мемсет, чтобы она ИНТОВСКИЙ массив заполнила единицами?
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    memset заполняет память побайтно, т.е. элементы вашего массива заполняются 16-ричными значениями 0x01010101. При переводе в целое получается 16843009.
    Вот есть похожая тема на CodeGuru: http://www.codeguru.com/forum/archive/inde...p/t-246170.html
     
Загрузка...

Поделиться этой страницей