当前位置: 首页>>代码示例>>C++>>正文


C++ Bigint::sign方法代码示例

本文整理汇总了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;
}
开发者ID:CoderINusE,项目名称:bcw_codebook,代码行数:70,代码来源:pJ.cpp


注:本文中的Bigint::sign方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。