您的位置:首页 > 其它

poj-2993-Emag eht htiw Em Pleh && poj-2996-Help Me with the Game

2016-03-28 21:08 489 查看
poj-2993 poj-2996

先说2996的题意:

给一张棋盘,按KQRBKNP的顺序输出棋子的位置

其中大写字母代表白棋,小写字母代表黑棋

有一点需要注意,左下角是(1, 1)点

细心一些,耐心一些就可以AC了

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <algorithm>
#define N 13
#define ll long long
using namespace std;
char Map[10][10];
string s;
int main(){
#ifndef ONLINE_JUDGE
freopen("1.txt", "r", stdin);
#endif
int i, j, l;
bool flag = true;
getline(cin, s);
for (i = 0; i < 8; i++){
getline(cin, s);
l = s.size();
for (j = 0; j < 8; j++){
Map[i][j] = s[2+j*4];
}
getline(cin, s);
}
printf("White: ");
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'K'){
if (flag){
flag = false;
}else{
printf(",");
}
printf("K%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'Q'){
printf(",Q%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'R'){
printf(",R%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'B'){
printf(",B%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'N'){
printf(",N%c%d", j+'a', 8-i);
}
}
}
for (i = 7; i >= 0; i--){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'P'){
printf(",%c%d", j+'a', 8-i);
}
}
}
puts("");
printf("Black: ");
flag = true;
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'k'){
if (flag){
flag = false;
}else{
printf(",");
}
printf("K%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'q'){
printf(",Q%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'r'){
printf(",R%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'b'){
printf(",B%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'n'){
printf(",N%c%d", j+'a', 8-i);
}
}
}
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++){
if (Map[i][j] == 'p'){
printf(",%c%d", j+'a', 8-i);
}
}
}
puts("");
return 0;
}


2993和2996是相反的,给出每个棋子的位置,输出棋盘

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <algorithm>
#define N 13
#define ll long long
using namespace std;
char Map[10][10];
string s;
int main(){
#ifndef ONLINE_JUDGE
freopen("1.txt", "r", stdin);
#endif
int i, j, k, l, x, y;
char c;
getline(cin, s);
l = s.size();
for (i = 0; 7+i*4 < l; i++){
c = s[7+i*4];
if (c < 'A' || c > 'Z') break;
x = s[9+i*4]-'0';
y = s[8+i*4]-'a';
Map[x][y] = c;
}
for(i = 7+i*4; i < l; i+=3){
x = s[i+1]-'0';
y = s[i]-'a';
Map[x][y] = 'P';
}
getline(cin, s);
l = s.size();
for (i = 0; 7+i*4 < l; i++){
c = s[7+i*4]+32;
if (c < 'a' || c > 'z') break;
x = s[9+i*4]-'0';
y = s[8+i*4]-'a';
Map[x][y] = c;
}
for(i = 7+i*4; i < l; i+=3){
x = s[i+1]-'0';
y = s[i]-'a';
Map[x][y] = 'p';
}
puts("+---+---+---+---+---+---+---+---+");
for (i = 8; i > 0; i--){
printf("|");
for (j = 0; j < 8; j++){
if ((i+j)&1){
printf(":");
}else{
printf(".");
}
if ((Map[i][j] >= 'a' && Map[i][j] <= 'z') || (Map[i][j] >= 'A' && Map[i][j] <= 'Z')){
printf("%c", Map[i][j]);
}else{
if ((i+j)&1){
printf(":");
}else{
printf(".");
}
}
if ((i+j)&1){
printf(":|");
}else{
printf(".|");
}
}
cout << endl;
puts("+---+---+---+---+---+---+---+---+");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: