现在的位置: 首页 > 综合 > 正文

Programming Perl———-Column1

2013年11月15日 ⁄ 综合 ⁄ 共 962字 ⁄ 字号 评论关闭


Problem 3.

    This problem let us write all the solutions, and run, then based on the results we can get the most effective solution.

Now I don't want to compare these solutions including last file has given.

C++ bitset solution:

#include <iostream>
#include <bitset>

#define MAX_LENGTH 10000000

int main (int argc, char *argv[]) {
    std::bitset<MAX_LENGTH> array;

    int32_t i;
    for (i = 0; i < MAX_LENGTH; i++) {
        array[i] = 0;
    }

    i = 0;
    while (std::cin >> i) {
        array[i] = 1;
    }

    for (i = 0; i < MAX_LENGTH; i++ ) {
        if (array[i]) {
            std::cout << i << " is set" << std::endl;
        }
    }

    return 0;
}

C using the last file functions:

#include <stdlib.h>
#include <stdio.h>

#define MAX_LENGTH 10000000
#define INT_LENGTH 32
#define SHIFT 5
#define MASK 0X1F

int32_t integerArray[1 + MAX_LENGTH >> SHIFT];

void set(int32_t i){
    integerArray[i >> SHIFT] |= (1 << (i & MASK));
}

void clear(int32_t i) {
    integerArray[i >> SHIFT] &= ~(1 << (i & MASK));
}

int test(int32_t i) {
    return integerArray[i >> SHIFT] & (1 << (i & MASK));
}

int main (void) {
    int32_t i;
    for (i = 0; i < 10000000; i++) {
        clear(i);
    }

    while (scanf("%d", &i) != EOF) {
        set(i);
        if (test(i)) {
            printf ("%d is set\n", i);
        }
    }

    return 0;
}



抱歉!评论已关闭.