题解
2023-07-07 20:30:37
发布于:江苏
11阅读
0回复
0点赞
#include <iostream>
#include <string>
using namespace std;
int retSize(string type) {
if (type=="int") {
return 4;
} else if (type=="short") {
return 2;
} else if (type=="char") {
return 1;
} else if (type=="double") {
return 8;
}
}
int n;
int main() {
// 从第一种类型成员变量开始放,一旦有成员变量与上一种变量不同就需要对齐到要放的变量大小的整数倍。
string type;
int mtype = -1;
cin >> n;
int cnt = 0, dqs = 0;
int pos = 0, rs, ret = 0;
for (int i=1; i<=n; i++) {
cin >> type;
rs = retSize(type);
dqs = max(dqs, rs);
if (rs == 8) ret = 8;
else ret = min(rs, 4); // linux 判题机默认 4
while(dqs!=1 && pos%ret!=0) {
pos++;
}
pos += rs;
// printf("%d dqs:%d pos:%d cnt:%d ans:%d\n", rs, dqs, pos, cnt, cnt*dqs);
}
while (pos%dqs) pos++;
cout << pos << endl;
return 0;
}
这里空空如也
有帮助,赞一个