ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P6207 [USACO06OCT] Cows on Skates G做题笔记

2022-06-06 16:04:32  阅读:139  来源: 互联网

标签:输出 P6207 递归 int 题解 xy 做题 USACO06OCT 100


开始以为能秒切,结果发现不清楚如何实现路径输出,于是乎瞅了眼题解,发现是递归输出路径,\(AC\) 后搞不清为啥要先输出 1 1,因为如果这样我的代码会输出两次 1 1,后来发现我的输出方式是递归到 0 0 再返回,而题解递归到 1 1 就返回了,没有输出 1 1,所以我的代码会多输出一次 1 1

#include <bits/stdc++.h>
  using namespace std;
int n,m,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},u,v,i,j;
char c[150][100];
struct xy{
	int x,y;
}t,s[150][100];
queue<xy>q;
void bfs()
{
	c[1][1]='+';
	q.push(xy{1,1});
	while (!q.empty())
	{
		t=q.front();
		q.pop();
		for (i=0;i<4;i++)
		{
			u=t.x+dx[i];
			v=t.y+dy[i];
			if (u>=1 && u<=n && v>=1 && v<=m && c[u][v]=='.')
			{
				c[u][v]='+';
				s[u][v].x=t.x;
				s[u][v].y=t.y;
				if (u==n && v==m) return;
				q.push(xy{u,v});
			}
		}
	}
}
void write(int p,int q)
{
	if (!p && !q) return;
	write(s[p][q].x,s[p][q].y);
	cout<<p<<" "<<q<<endl;
}
int main()
{
	ios::sync_with_stdio(0); cin.tie(nullptr);
	cin>>n>>m;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
		{
			cin>>c[i][j];
		}
	}
	bfs();
	write(n,m);
	return 0;
}

标签:输出,P6207,递归,int,题解,xy,做题,USACO06OCT,100
来源: https://www.cnblogs.com/Jason142/p/16348484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有