POJ-2996 2993

POJ-2996

#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <utility>
#include <vector>
#include <cmath>
#define fi first
#define sc second
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N=110;
char g[N][N];
int ne[6]={‘K‘,‘Q‘,‘R‘,‘B‘,‘N‘,‘P‘};
void solve()
{
	vector <PII>v[1000];
	for(int i=0;i<=16;i++)scanf("%s",&g[i]);
	int hh=1;
	for(int i=15;i>=1;i-=2)
	{
		int x=2,tt=0;
		for(int j=x;j<=30;j+=4)
		{
			tt++;
			if(g[i][j]==‘.‘||g[i][j]==‘:‘)continue;
			v[g[i][j]].push_back({tt,hh});
		}
		hh++;
	}
	// k q r b n p
	printf("White: ");
	bool flag=false;

	for(int i=0;i<6;i++)
	{
		int x=ne[i];
		if(v[x].size()==0)continue;
		if(!flag)
		{
			PII  y=v[x][0];
			//printf("%c%c%d",x,y.fi+‘a‘-1,8-y.sc+1);
			if(x!=‘P‘)printf("%c%c%d",x,y.fi+‘a‘-1,y.sc);
			else printf(",%c%d",y.fi+‘a‘-1,y.sc);
		}
		//for(auto y:v[x])
		for(int j=0;j<v[x].size();j++)
		{
			if(!flag)
			{
				flag=true;continue;
			}
			if(x!=‘P‘)printf(",%c%c%d",x,v[x][j].fi+‘a‘-1,v[x][j].sc);
			else printf(",%c%d",v[x][j].fi+‘a‘-1,v[x][j].sc);
		}
	}
	puts("");printf("Black: ");
	flag=false;
	hh=1;
	for(int i=0;i<200;i++)v[i].clear();
	for(int i=1;i<=16;i+=2)
	{

		int x=2,tt=0;
		for(int j=x;j<=30;j+=4)
		{
			tt++;
			if(g[i][j]==‘.‘||g[i][j]==‘:‘)continue;
			v[g[i][j]].push_back({tt,hh});
		}
		hh++;
	}
	for(int i=0;i<6;i++)
	{
		int x=ne[i]+32;
		if(v[x].size()==0)continue;
		if(!flag)
		{
			PII  y=v[x][0];
			//printf("%c%c%d",x,y.fi+‘a‘-1,8-y.sc+1);
			if(x!=‘P‘+32)printf("%c%c%d",ne[i],y.fi+‘a‘-1,8-y.sc+1);
			else printf(",%c%d",y.fi+‘a‘-1,8-y.sc+1);
		}
		for(int j=0;j<v[x].size();j++)
		{
			if(!flag)
			{
				flag=true;continue;
			}
			if(x!=‘P‘+32)printf(",%c%c%d",ne[i],v[x][j].fi+‘a‘-1,8-v[x][j].sc+1);
			else printf(",%c%d",v[x][j].fi+‘a‘-1,8-v[x][j].sc+1);
		}

	}
	puts("");
	//printf("%d %d\n",‘a‘,‘A‘); 97 /65
}
int main()
{
	int tests=1;
	//scanf("%d",&tests);
	while(tests--)
	{
		solve();
	}
	return 0;
}

POJ-2993

#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <utility>
#include <vector>
#include <cmath>
#define fi first
#define sc second
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N=110;
char g[N][N],w[N],b[N];
int ne[6]={‘K‘,‘Q‘,‘R‘,‘B‘,‘N‘,‘P‘};
void draw()
{
	string s1="+---",s2="...",s3=":::";
	int tt=0;
	for(int i=0;i<=16;i++)
	{
		string s;
		//string s="+---";
		if(i&1)
		{
			tt++;
			for(int j=1;j<=8;j++)
			{
				s+="|";
				if(tt&1)
				{
					if(j&1)s+=s2;
					else s+=s3;
				}
				else
				{
					if(j&1)s+=s3;
					else s+=s2;
				}
			}
				s+="|";
		}
		else
		{
			for(int j=1;j<=8;j++)s+=s1;  s+="+";
		}
		for(int j=0;j<s.size();j++)g[i][j]=s[j];
		//printf("%s\n",g[i]);
	}
}
void solve()
{
	vector <PII>v[1000];
	draw();
	gets(w);
	//cout<<w[7];
	v[w[7]].push_back({w[8]-‘a‘+1,w[9]-‘0‘});//5 1
	//printf("%d %d\n",v[w[7]][0].fi,v[w[7]][0].sc);
	for(int i=7;i<strlen(w);i++)
	{
		if(w[i]==‘,‘)
		{
			if(w[i+1]<‘a‘)
			{
				v[w[i+1]].push_back({w[i+2]-‘a‘+1,w[i+3]-‘0‘});
			}
			else
		        {
			         v[‘P‘].push_back({w[i+1]-‘a‘+1,w[i+2]-‘0‘});
		         }
		}
	}
	//printf("%d....\n",v[‘P‘].size());
	int hh=1;
	for(int i=15;i>=1;i-=2)
	{
		int tt=0;
		for(int j=2;j<=30;j+=4)
		{
			tt++;
			for(int k=0;k<6;k++)
			{
				int x=ne[k];
				for(int m=0;m<v[x].size();m++)
				{
					if(v[x][m].fi==tt&&v[x][m].sc==hh)
					{
						g[i][j]=x;
					}
				}
			}
		}
		hh++;
	}
	for(int i=0;i<200;i++)v[i].clear();
	gets(b);
	v[b[7]].push_back({b[8]-‘a‘+1,b[9]-‘0‘});//5 8
	//printf("%d %d\n",v[w[7]][0].fi,v[w[7]][0].sc);

	for(int i=7;i<strlen(b);i++)
	{
		if(b[i]==‘,‘)
		{
			if(b[i+1]<‘a‘)
			{
				v[b[i+1]].push_back({b[i+2]-‘a‘+1,b[i+3]-‘0‘});
			}
			else
		        {
			         v[‘P‘].push_back({b[i+1]-‘a‘+1,b[i+2]-‘0‘});
		         }
		}
	}
	 hh=1;
	for(int i=15;i>=1;i-=2)
	{
		int tt=0;
		for(int j=2;j<=30;j+=4)
		{
			tt++;
			for(int k=0;k<6;k++)
			{
				int x=ne[k];
				for(int m=0;m<v[x].size();m++)
				{
					if(v[x][m].fi==tt&&v[x][m].sc==hh)
					{
						g[i][j]=char(x+32);
					}
				}
			}
		}
		hh++;
	}
	for(int i=0;i<=16;i++)cout<<g[i]<<endl;
}
int main()
{
	int tests=1;
	scanf("%d",&tests);
	while(tests--)
	{
		solve();
	}
	return 0;
}

POJ-2996 2993

上一篇:equals与==的区别


下一篇:debug