题意 给你一个n*n的矩阵然后给你k代表能替换k次 然后从 (1,1)走向(n,n)
蒟蒻不会 一旁的zls看了一眼觉得我们要dp 但是dp不能记录答案路径 于是我们觉得预处理dp 处理出来前面能全替换成a的点 也就是坐标 i+j-1-k ==dp[i][j] 也就是说这条路径a的数目加上k等于路径的字符串长度 我们从能走的坐标标记出来 然后进行bfs bfs是zls的层层bfs 也就是你bfs一层记录最小的ch 然后找最小的ch去bfs 记录答案 注意如果k+dp[i][j]>=n+n-1代表路上都可以换成a 那么你就输出2n - 1 个a 但是k = 0 要特判 直接1 1bfs
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
using namespace std;
const int MAX_N = 2024;
char str[MAX_N][MAX_N];
char ans[MAX_N];
int dp[MAX_N][MAX_N],vis[MAX_N][MAX_N];
int n,tot;
int dir[2][2] = {1,0,0,1};
set<string > st;
vector<pair<int ,int > > vt;
queue<pair<int,int> >q;
void bfs(){