801 移棋子游戏
// 801 移棋子游戏.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
http://oj.daimayuan.top/course/22/problem/903
有个n×m的棋盘,其中(1,1)格在左上角,(n,m)格在右下角。
棋盘的第一行和第一列的每个格子标了黑白两种颜色。
上面有一个棋子。Alice和Bob轮流移动这个棋子,Alice先手移动。
每次可以往上或往左移动一格,一旦这个棋子移动到第一行或者第一列游戏结束。
执行最后一步移动的人,如果将棋子移动到黑格,那么就获胜,否则就失败。
现在给这个棋子的起始位置,问最后获胜的玩家是谁,对于所有(i,j)
满足2≤i≤n,2≤j≤m输出。
输入格式
第一行两个整数n,m(2≤n,m≤1000)。
接下来一行m−1
个由BW构成的字符串,分别表示第一行2
到m
格的颜色,其中B是黑色,W是白色。
接下来一行n−1
个由BW构成的字符串,分别表示第一列2
到n
格的颜色,其中B是黑色,W是白色。
输出格式
一共n−1
行,每行m−1
个字母,表示胜者。如果Alice获胜,输出一个A,否则输出一个B。
样例输入
3 4
WBW
BW
样例输出
AAB
BAA
*/
#include <iostream>
using namespace std;
const int N = 1010;
int dp[N][N];
int n, m;
char row[1010], col[1010];
int main()
{
cin >> n >> m;
cin >> &row[2] >> &col[2];
if (row[2] == 'B' || col[2] == 'B') dp[2][2] = 1;
for (int i = 3; i <= m; i++) {
if (row[i] == 'B' || dp[2][i - 1] == 0) dp[2][i] = 1;
}
for (int j = 3; j <= n; j++) {
if (col[j] == 'B' || dp[j - 1][2] == 0) dp[j][2] = 1;
}
for (int i = 3; i <= n; i++) {
for (int j = 3; j <= m; j++) {
dp[i][j] = !(dp[i - 1][j] & dp[i][j - 1]);
}
}
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
if (dp[i][j]) {
cout << "A";
}
else {
cout << "B";
}
}
cout << endl;
}
return 0;
}
//简洁版本
#include <iostream>
#include <stdio.h>
using namespace std;
typedef long long ll;
const int N = 2010;
int n, m, dp[N][N];
char r[N], c[N];
int main()
{
scanf("%d%d",&n,&m);
scanf("%s",r+2);
scanf("%s",c+2);
for (int i = 2; i <= m; i++) {
dp[1][i] = (r[i] =='W');
//r[i] = 'W' 1,'B' 0
}
for (int i = 2; i <= n; i++) {
dp[i][1] = (c[i] == 'W');
//r[i] = 'W' 1,'B' 0
}
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
if (dp[i][j - 1] == 0) dp[i][j] = 1;
if (dp[i - 1][j] == 0) dp[i][j] = 1;
//dp[i][j] = !(dp[i][j - 1] & dp[i - 1][j]);
if (dp[i][j] == 1) printf("A");
else printf("B");
}
puts("");
}
return 0;
}
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2020-12-04 LeetCode 659. 分割数组为连续子序列
2019-12-04 poj 2991 起重机 题解《挑战程序设计竞赛》
2014-12-04 stl中char 与wchar 的转换