本文整理汇总了C++中Bigint::sign方法的典型用法代码示例。如果您正苦于以下问题:C++ Bigint::sign方法的具体用法?C++ Bigint::sign怎么用?C++ Bigint::sign使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bigint
的用法示例。
在下文中一共展示了Bigint::sign方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: go
void go(int id, Bigint x, Bigint y, int dir) {
if (onstack[id][dir]) {
if (x != location[id][dir].F || y != location[id][dir].S) {
puts("Infinity");
} else {
for (int i=1; i<=N; i++) {
for (int j=0; j<4; j++) {
ans = max(ans, dp[i].v[j]);
}
}
ans.print();
puts("");
}
exit(0);
}
if (done[id][dir]) return;
onstack[id][dir] = 1;
Bigint oriX = x;
Bigint oriY = y;
location[id][dir] = {x, y};
dp_t best;
int oriD = dir;
for (auto it : f[id].ins) {
if ('0' <= it[0] && it[0] <= '9') {
int j = atoi(it.c_str());
go(j, x, y, dir);
dp_t tmp = dp[j];
for (int i=0; i<4-dir; i++) {
rotateR(tmp);
}
Bigint tx = x - oriX;
Bigint ty = y - oriY;
for (int i=0; i<4; i++) {
ans = max(ans, tmp.v[i] + x.sign(sign[i][0]) + y.sign(sign[i][1]));
best.v[i] = max(best.v[i], tmp.v[i] + tx.sign(sign[i][0]) + ty.sign(sign[i][1]));
}
x = x + mov[j][dir].F;
y = y + mov[j][dir].S;
dir = (dir + movD[j]) % 4;
} else {
if (it == "LEFT") {
dir++;
} else if (it == "RIGHT") {
dir--;
} else {
x = x + dirMove[dir][0];
y = y + dirMove[dir][1];
}
Bigint tx = x - oriX;
Bigint ty = y - oriY;
for (int i=0; i<4; i++) {
best.v[i] = max(best.v[i], tx.sign(sign[i][0]) + ty.sign(sign[i][1]));
}
dir = (dir + 4) % 4;
}
ans = max(ans, absBigint(x) + absBigint(y));
}
mov[id][oriD] = {x - oriX, y - oriY};
movD[id] = (4 + dir - oriD) % 4;
back0(best, oriD);
dp[id] = best;
done[id][oriD] = 1;
onstack[id][oriD] = 0;
}