計數法(搬運)
阿新 • • 發佈:2022-05-07
int func(int *iq, int size) {
int cnt = 0;
for(i = 0; i < size; ++i) {
if(iq[i] > 163)
{
++cnt;
}
}
return cnt;
}
int *func(int *iq, int size, int IQMax) { // (1) int i; int *cnt = (int *)malloc( sizeof(int) * (IQMax+1) ); // (2) memset(cnt, 0, sizeof(int) * (IQMax+1)); // (3) for(i = 0; i < size; ++i) { ++cnt[ iq[i] ]; // (4) } return cnt; // (5) }
int cnt[ (1<<21) + 1 ]; int countPairs(int* deliciousness, int deliciousnessSize){ int i, sum = 0; int ans = 0; memset (cnt, 0, sizeof(cnt)); // (1) for(i = 0; i < deliciousnessSize; ++i) { // (2) for(sum = 1; sum <= (1<<21); sum *= 2) { // (3) other = sum - deliciousness[i]; // (4) if (other < 0) { // (5) continue; } ans += cnt[ other ]; // (6) ans %= 1000000007; } ++ cnt[ deliciousness[i] ]; // (7) } return ans; // (8) }