【OJ】1.6.7将军(Check the Check)UVa 10196 // PC 1101017 // acmclub.com 25177

简介: /* 1.6.7将军(Check the Check)UVa 10196 // PC 1101017 // hzu.acmclub.com 25177*/#include#includeusing namespace std;char a[10][10]...
/*
 1.6.7将军(Check the Check)UVa 10196 // PC 1101017 //  hzu.acmclub.com 25177
*/

#include<iostream>
#include<stdio.h>
using namespace std;
char a[10][10];
int x,y,X,Y;  int white=0,black=0;

/////////////////////////////////blackk
void che1(int x,int y){
 if(y<=8&&(a[x][y]=='R'||a[x][y]=='Q')){black=1;}////
 else if(y<=7&&a[x][y]=='.')che1(x,y+1);
}
void che2(int x,int y){
 if(y>=0&&(a[x][y]=='R'||a[x][y]=='Q')){black=1;}////
 else if(y>=1&&a[x][y]=='.')che2(x,y-1);
}
void che3(int x,int y){
 if(x<=8&&(a[x][y]=='R'||a[x][y]=='Q')){black=1;}////
 else if(x<=7&&a[x][y]=='.')che3(x+1,y);
}
void che4(int x,int y){
 if(x>=0&&(a[x][y]=='R'||a[x][y]=='Q')){black=1;}////
 else if(x>=1&&a[x][y]=='.')che4(x-1,y);
}
//////////////////////////
void xiang1(int x,int y){
 if(x<=8&&y<=8&&(a[x][y]=='B'||a[x][y]=='Q'))black=1;
 else if(x<=7&&y<=7&&(a[x][y]=='.'))xiang1(x+1,y+1);
}
void xiang2(int x,int y){
 if(x<=8&&y>=0&&(a[x][y]=='B'||a[x][y]=='Q'))black=1;
 else if(x<=7&&y>=1&&(a[x][y]=='.'))xiang2(x+1,y-1);
}
void xiang3(int x,int y){
 if(x>=0&&y<=8&&(a[x][y]=='B'||a[x][y]=='Q'))black=1;
 else if(x>=1&&y<=7&&(a[x][y]=='.'))xiang3(x-1,y+1);
}
void xiang4(int x,int y){
 if(x>=0&&y>=0&&(a[x][y]=='B'||a[x][y]=='Q'))black=1;///->1未改
 else if(x>=1&&y>=1&&(a[x][y]=='.'))xiang4(x-1,y-1);///->2
}
//////////////////////////////////


/////////////////////////////////white
void che11(int X,int Y){
 if(Y<=8&&(a[X][Y]=='r'||a[X][Y]=='q')){white=1;}////
 else if(Y<=7&&a[X][Y]=='.')che11(X,Y+1);
}
void che22(int X,int Y){
 if(Y>=0&&(a[X][Y]=='r'||a[X][Y]=='q')){white=1;}////
 else if(Y>=1&&a[X][Y]=='.')che22(X,Y-1);
}
void che33(int X,int Y){
 if(X<=8&&(a[X][Y]=='r'||a[X][Y]=='q')){white=1;}////
 else if(X<=7&&a[X][Y]=='.')che33(X+1,Y);
}
void che44(int X,int Y){
 if(X>=0&&(a[X][Y]=='r'||a[X][Y]=='q')){white=1;}////
 else if(X>=1&&a[X][Y]=='.')che44(X-1,Y);
}
//////////////////////////
void xiang11(int X,int Y){
 if(X<=8&&Y<=8&&(a[X][Y]=='b'||a[X][Y]=='q'))white=1;
 else if(X<=7&&Y<=7&&(a[X][Y]=='.'))xiang11(X+1,Y+1);
}
void xiang22(int X,int Y){
 if(X<=8&&Y>=0&&(a[X][Y]=='b'||a[X][Y]=='q'))white=1;
 else if(X<=7&&Y>=1&&(a[X][Y]=='.'))xiang22(X+1,Y-1);
}
void xiang33(int X,int Y){
 if(X>=0&&Y<=8&&(a[X][Y]=='b'||a[X][Y]=='q'))white=1;
 else if(X>=1&&Y<=7&&(a[X][Y]=='.'))xiang33(X-1,Y+1);
}
void xiang44(int X,int Y){
 if(X>=0&&Y>=0&&(a[X][Y]=='b'||a[X][Y]=='q'))white=1;///->1未改
 else if(X>=1&&Y>=1&&(a[X][Y]=='.'))xiang44(X-1,Y-1);///->2
}
//////////////////////////////////

 


int main(){
 
// freopen("1.6.7input.txt","r",stdin);
// freopen("1.6.7output.txt","w",stdout);
 int flag=1,flag1=1,flag2=1,num=0;

//input1
 for(int i=1;i<=8;i++){
  for(int j=1;j<=8;j++){
   a[i][j]=getchar();
   while(flag){if(a[i][j]!='.')flag=0;break;}
   while(flag1){if(a[i][j]=='k'){x=i;y=j;flag1=0;}break;}
   while(flag2){if(a[i][j]=='K'){X=i;Y=j;flag2=0;}break;}
  }
  getchar();
 }
//mainfunc 
 while(!flag){
  
 getchar();///////////空行
 
  num++;flag=flag1=flag2=1;
   white=0,black=0;
  while(1){
   
////////////////////////////////////////BLACK

   if(a[x+1][y+1]=='P'&&x+1<=8&&y+1<=8||a[x+1][y-1]=='P'&&x+1<=8&&y-1>=1){black=1;break;}//卒

      che1(x,y+1);if(black==1)break;//有皇后
      che2(x,y-1);if(black==1)break;
      che3(x+1,y);if(black==1)break;
      che4(x-1,y);if(black==1)break;

   xiang1(x+1,y+1);if(black==1)break; //有皇后     
   xiang2(x+1,y-1);if(black==1)break; //有皇后     
   xiang3(x-1,y+1);if(black==1)break; //有皇后     
   xiang4(x-1,y-1);if(black==1)break; //有皇后     
//   
   if(a[x+2][y+1]=='N'&&x+2<=8&&y+1<=8||
   a[x+1][y+2]=='N'&&x+1<=8&&y+2<=8||
   a[x-1][y-2]=='N'&&x-1>=1&&y-2>=1||
   a[x-2][y-1]=='N'&&x-2>=1&&y-1>=1||
   a[x+1][y-2]=='N'&&x+1<=8&&y-2>=1||
   a[x+2][y-1]=='N'&&x+2<=8&&y-1>=1||
   a[x-1][y+2]=='N'&&x-1>=1&&y+2<=8||
   a[x-2][y+1]=='N'&&x-2>=1&&y+1<=8   
   ) {black=1;break;}//马
   
   if(a[x+1][y+1]=='K'&&x+1<=8&&y+1<=8||
   a[x-1][y-1]=='K'&&x-1>=1&&y-1>0||
   a[x+1][y-1]=='K'&&x+1<=8&&y+1>0||
   a[x-1][y+1]=='K'&&x+1>0&&y+1<=8||
   a[x][y+1]=='K'&&y+1<=8||
   a[x+1][y]=='K'&&x+1<=8||
   a[x-1][y]=='K'&&x-1>=1||
   a[x][y-1]=='K'&&y-1>=1   
   ) {black=1;break;}//王


/////////////////////////////////////////////WHITE
//卒上
   if(a[X-1][Y-1]=='p'&&X-1>=1&&Y-1>=1||a[X-1][Y+1]=='p'&&Y+1<=8&&X-1>=1){white=1;break;}//卒

      che11(X,Y+1);if(white==1)break;//有皇后
      che22(X,Y-1);if(white==1)break;
      che33(X+1,Y);if(white==1)break;
      che44(X-1,Y);if(white==1)break;

   xiang11(X+1,Y+1);if(white==1)break; //有皇后     
   xiang22(X+1,Y-1);if(white==1)break; //有皇后     
   xiang33(X-1,Y+1);if(white==1)break; //有皇后     
   xiang44(X-1,Y-1);if(white==1)break; //有皇后     
//   
   if(a[X+2][Y+1]=='n'&&X+2<=8&&Y+1<=8||
   a[X+1][Y+2]=='n'&&X+1<=8&&Y+2<=8||
   a[X-1][Y-2]=='n'&&X-1>=1&&Y-2>=1||
   a[X-2][Y-1]=='n'&&X-2>=1&&Y-1>=1||
   a[X+1][Y-2]=='n'&&X+1<=8&&Y-2>=1||
   a[X+2][Y-1]=='n'&&X+2<=8&&Y-1>=1||
   a[X-1][Y+2]=='n'&&X-1>=1&&Y+2<=8||
   a[X-2][Y+1]=='n'&&X-2>=1&&Y+1<=8   
   ) {white=1;break;}//马
   
   if(a[X+1][Y+1]=='k'&&X+1<=8&&Y+1<=8||
   a[X-1][Y-1]=='k'&&X-1>=1&&Y-1>0||
   a[X+1][Y-1]=='k'&&X+1<=8&&Y+1>0||
   a[X-1][Y+1]=='k'&&X+1>0&&Y+1<=8||
   a[X][Y+1]=='k'&&Y+1<=8||
   a[X+1][Y]=='k'&&X+1<=8||
   a[X-1][Y]=='k'&&X-1>=1||
   a[X][Y-1]=='k'&&Y-1>=1   
   ) {white=1;break;}//王

 

   break;  
  }
//output  
  if(black)cout<<"Game #"<<num<<": black king is in check.\n";
  else if(white)cout<<"Game #"<<num<<": white king is in check.\n";
  else cout<<"Game #"<<num<<": no king is in check.\n";

//input
  for(int i=1;i<=8;i++){
  for(int j=1;j<=8;j++){
   a[i][j]=getchar();
   while(flag){if(a[i][j]!='.')flag=0;break;}
   while(flag1){if(a[i][j]=='k'){x=i;y=j;flag1=0;}break;}
   while(flag2){if(a[i][j]=='K'){X=i;Y=j;flag2=0;}break;}
  }
  getchar();
  }
 
 }
 return 0;
}


目录
相关文章
3GPP相应的5G UDN场景及性能需求 | 带你读《5G UDN(超密集网络)技术详解》之十九
相比 IMT-2020 推进组,3GPP 对 5G UDN 场景的研究更加具有针对性。 在业务应用独立式部署(SA)技术组的研究中,与 UDN 相关的场景都是服务 室内用户的,具体有两种:办公室和热点区域。
3GPP相应的5G UDN场景及性能需求 | 带你读《5G UDN(超密集网络)技术详解》之十九
|
前端开发 JavaScript PHP
php使用mPDF实战案例分析字符串太长时文本变小无法自动分页的解决方案
php使用mPDF实战案例分析字符串太长时文本变小无法自动分页的解决方案
650 0
|
6天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
3098 10
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
14天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3494 12
|
17天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3584 25
|
10天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2787 6
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
8天前
|
人工智能 自然语言处理 供应链
|
8天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1308 3
|
29天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23613 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」