⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1008.cpp

📁 我的URAL的1000 ~ 1050 的全部代码 包含WA 最后AC的程序 有2~3个比较难的是MAIGO的程序
💻 CPP
字号:
#include <iostream>#include <string>#include <stdlib.h>#include <queue>#include <vector>using namespace std;const int maxN = 10;bool map[maxN+2][maxN+2];int x1,y1;int dir[4][2] ={ 1,0,					      0,1,					      -1,0,					      0, -1					};string direct = "RTLB";vector<string> input2; int stat = 0;struct point{	int x, y;};int str2num( string a ){		int s = 0;	for( int i = 0; i < a.length(); i++ )		{s *= 10; s+=a[i]-'0';}	return s;}void readIn(){	string str1,str2;	int i,x,y;	memset( map,0,sizeof(map) );	getline(cin , str1);	cin >> str2;	if( str2[0] <'0' || str2[0] > '9' )stat = 2;	else stat = 1;		if( stat == 1 )	{			int n = str2num(str1);		x1 = str2num(str2);		cin >> y1;		map[x1][y1] = true;		for( i = 1 ; i < n ; i++ )		{			cin >> x >> y;			map[x][y] = true;		}		return;	}		if( stat == 2 )	{		for( i = 0 ; i < str1.length() ; i++)		{			if (str1[i]==' '){				x1 = str2num( str1.substr(0,i) );				y1 = str2num( str1.substr(i+1, str1.length() - i-1 ) );				break;			} 		} 		input2.push_back(str2);		string temp;		while (cin >> temp){ input2.push_back(temp); }		return;	}}void work1(){	int i, x, y;	queue<point> pq;	vector<string> ans1;	point p1;	p1.x = x1, p1.y = y1;	point p;	pq.push(p1);	map[p1.x][p1.y] = false;	while( !pq.empty() )	{		p = pq.front();		pq.pop();		string dirnow;		for( i = 0 ; i < 4 ; i++ )		{				point p2;			p2.x = p.x+dir[i][0];			p2.y = p.y+dir[i][1];			if( map[p2.x][p2.y] )			{				dirnow.append(1,direct[i]);				pq.push(p2);				map[p2.x][p2.y] = false;			}		}		ans1.push_back(dirnow);	}		cout << p1.x << ' ' << p1.y << endl;	for( i = 0 ; i < ans1.size() - 1 ; i++ )		cout << ans1[i] << ','  << endl;	cout <<'.' << endl;}int min(int a, int b){return a < b ? a: b;}void work2(){		int i , j , r = 0;	queue<point> pq;	int n = input2.size();	point p,p1;	p1.x = x1, p1.y = y1;	map[p1.x][p1.y] = true;	pq.push(p1);	while( !pq.empty() )	{		p = pq.front();		pq.pop();		point p2;		for( i = 0; i < 4  ;i++)		{			if(input2[r][i] == 'R'){ p2.x = p.x + dir[0][0], p2.y = p.y + dir[0][1]; }			if(input2[r][i] == 'T'){ p2.x = p.x + dir[1][0], p2.y = p.y + dir[1][1]; }			if(input2[r][i] == 'L'){ p2.x = p.x + dir[2][0], p2.y = p.y + dir[2][1]; }			if(input2[r][i] == 'B'){ p2.x = p.x + dir[3][0], p2.y = p.y + dir[3][1]; }			if(input2[r][i] == ','|| input2[r][i] == '.') break;			pq.push(p2);			map[p2.x][p2.y] = true;		}		r++;	}	cout << n << endl;	for( i = 1 ; i <= maxN ; i++ )		for ( j = 1; j <= maxN ; j++ )			if( map[i][j] )cout << i << ' ' << j << endl;	return;}int main(){ //freopen("1008.in","r",stdin);	readIn();	if( stat == 1 )work1();	else work2();	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -