分配座位c语言编程,leetcode1227(飞机座位分配)--C语言实现
时间: 2023-11-02 18:06:18 浏览: 177
好的,这是一个非常经典的题目,以下是C语言代码实现:
```c
int maxNumberOfFamilies(int n, int** reservedSeats, int reservedSeatsSize, int* reservedSeatsColSize){
int i, j, cnt = 0;
int row, col, bit;
int map[100005] = {0};
for (i = 0; i < reservedSeatsSize; i++) {
row = reservedSeats[i][0];
col = reservedSeats[i][1];
bit = (1 << (col-1));
map[row] |= bit;
}
for (i = 1; i <= n; i++) {
int mask = map[i];
if ((mask & 0x1e) == 0) { // 2-5
cnt++;
}
else if ((mask & 0x3c) == 0) { // 4-7
cnt++;
}
else if ((mask & 0x78) == 0) { // 6-9
cnt++;
}
else if ((mask & 0xf0) == 0) { // 8-11
cnt++;
}
}
return cnt * 2 + (n - cnt) * 4;
}
```
这里采用了位运算的方式记录座位是否被占用,通过分析座位的占用情况,计算出最大的分配座位数量。
阅读全文