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


C++ VS::resize方法代码示例

本文整理汇总了C++中VS::resize方法的典型用法代码示例。如果您正苦于以下问题:C++ VS::resize方法的具体用法?C++ VS::resize怎么用?C++ VS::resize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VS的用法示例。


在下文中一共展示了VS::resize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: process

void process(void)
{
	memset(visit,-1,sizeof(visit));
	cin >> n >> m;
	data.resize(n);
	for(int i=0;i<n;i++)
		cin >> data[i];

	pos = VVI(n,VI(m,-1));

	int npos = 0;
	vector<int> xpos;
	vector<int> bpos;
	int spos = -1;

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(data[i][j] == 'S')
				spos = npos;
			if(data[i][j] == 'X')
				xpos.pb(npos);
			if(data[i][j] == 'B')
				bpos.pb(npos);

			if(data[i][j] != '#' && data[i][j] != 'E')
			{
				pos[i][j] = npos++;
			}
		}
	}

	int epos = -1;

	for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(pos[i][j] != -1) for(int k=0;k<4;k++)
	{
		int nx = i + dx[k];
		int ny = j + dy[k];
		if(data[nx][ny] == 'E') epos = pos[i][j];
	}

	if(epos == -1)
	{
		cout << "impossible" << endl;
		return;
	}

	xpos.resize(2,npos);
	bpos.resize(max(2,size(bpos)),npos);

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++) if(pos[i][j] != -1)
		{
			int p1 = pos[i][j];
			for(int k=0;k<4;k++)
			{
				int nx = i + dx[k];
				int ny = j + dy[k];
				link[p1][k] = pos[nx][ny];
			}
		}
	}

	visit[spos][xpos[0]][xpos[1]] = 0;
	queue<state> Q;
	Q.push(state(spos,xpos[0],xpos[1]));

	while(!Q.empty())
	{
		int sp = Q.front().s;
		int xp1 = Q.front().x1;
		int xp2 = Q.front().x2;
		int move = visit[sp][xp1][xp2];

		Q.pop();
		for(int i=0;i<4;i++) if(link[sp][i] != -1)
		{
			int npos = link[sp][i];
			if(npos == -1) continue;
			if(xp1 == npos)
			{
				int nnpos = link[xp1][i];
				if(nnpos == -1) continue;
				if(nnpos == xp2) continue;

				if(visit[npos][nnpos][xp2] < 0)
				{
					visit[npos][nnpos][xp2] = move+1;
					Q.push(state(npos,nnpos,xp2));
				}
				if(visit[npos][xp2][nnpos] < 0)
				{
					visit[npos][xp2][nnpos] = move+1;
					Q.push(state(npos,xp2,nnpos));
				}
			}
			else if(xp2 != npos)
			{
//.........这里部分代码省略.........
开发者ID:blmarket,项目名称:icpc,代码行数:101,代码来源:E.cpp


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