POJ 2993.Emag eht htiw Em Pleh

题目:http://poj.org/problem?id=2993

AC代码(C++):

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
#include <queue>
#include <math.h>
#include <string>
#include <string.h>
#include <bitset>

using namespace std;

int main(){
	char w[100];
	char b[100];
	char board[17][33];
	memset(w,'\0',sizeof(w));
	memset(b,'\0',sizeof(b));
	memset(board,' ',sizeof(board));
	cin.getline(w,100);
	cin.getline(b,100);
	int cnt = 0;
	char tmp;
	int tmpr;
	int tmpc;
	for(int i = 7; w[i]!='\0'; i++){
		if(cnt==0&&w[i-1]==','&&(w[i+2]==','||w[i+2]=='\0')){
			tmp = 'P';
			cnt++;
		}
		if(cnt==0){
			tmp = w[i];
			cnt++;
		}
		else if(cnt==1){
			tmpc = w[i]-'a';
			cnt++;
		}
		else if(cnt==2){
			tmpr = 8-(w[i]-'0');
			cnt++;
		}
		else{
			board[tmpr*2+1][tmpc*4+2] = tmp;
			cnt=0;
		}
	}
	if(cnt==3)board[tmpr*2+1][tmpc*4+2] = tmp;
	cnt = 0;
	for(int i = 7; b[i]!='\0'; i++){
		if(cnt==0&&b[i-1]==','&&(b[i+2]==','||b[i+2]=='\0')){
			tmp = 'P';
			cnt++;
		}
		if(cnt==0){
			tmp = b[i];
			cnt++;
		}
		else if(cnt==1){
			tmpc = b[i]-'a';
			cnt++;
		}
		else if(cnt==2){
			tmpr = 8-(b[i]-'0');
			cnt++;
		}
		else{
			board[tmpr*2+1][tmpc*4+2] = tmp+32;
			cnt=0;
		}
	}
	if(cnt==3)board[tmpr*2+1][tmpc*4+2] = tmp+32;
	
	for(int i = 0; i < 17; i++){
		for(int j = 0; j < 33; j++){
			if(i%2==0&&j%4==0)board[i][j]='+';
			else if(i%2==0&&j%4!=0)board[i][j]='-';
			else if(i%2!=0&&j%4==0)board[i][j]='|';
			else if(i%2!=0&&j%4-1==0&&((j+1)/4+i/2)%2==0)board[i][j]='.';
			else if(i%2!=0&&j%4-1==0&&((j+1)/4+i/2)%2!=0)board[i][j]=':';
			else if(i%2!=0&&j%4+1==4&&((j-1)/4+i/2)%2==0)board[i][j]='.';
			else if(i%2!=0&&j%4+1==4&&((j-1)/4+i/2)%2!=0)board[i][j]=':';
			else if(board[i][j]==' '){
				if((j/4+i/2)%2==0)board[i][j]='.';
				else if((j/4+i/2)%2!=0)board[i][j]=':';
			}
		}
	}
	
	for(int i = 0; i < 17; i++){
		for(int j = 0; j < 33; j++){
			cout<<board[i][j];
		}
		cout<<endl;
	}
}
总结:水题, 注意Pawn的处理和开头结尾, 还有如果棋盘为空的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值