#include <vector>
#include <iostream>
#include <string>
#include <queue>
using namespace std;
vector<pair<int, string>>strs;
vector<pair<int, string>>way;
queue<pair<int, string>> q;
int n, m,cur_j;
void dfs(int step, int empty) {
pair<int, string> k;
int i = step;
if(empty!=1&&step==strs.size())
return;
if (empty == 1 && !q.empty()) {
k = q.front();
q.pop();
way[cur_j++] = k;
dfs(i, n);
return;
}
else if (strs[i].first == 1) {
way[cur_j++] = strs[i];
dfs(i + 1, empty - 1);
return;
}
else if (strs[i].first == 0) {
k = strs[i];
q.push(k);
strs.erase(strs.begin() + i);
dfs(i, empty);
return;
}
return;
}
int main()
{
cin>>n; cin>>m;
for(int i=0;i<m;i++)
{
string s; cin>>s; int flag;
if(s[0]=='P') flag = 0;
else flag = 1;
strs.push_back(make_pair(flag, s));
}
way.resize(m);
int i = 0;
cur_j = 0;
while(strs[i].first==1)
{
way[cur_j++]=strs[i];
i++;
}
way[cur_j++] = strs[i];
dfs(i+1,n);
cout<<cur_j<<endl;
for(int i=0;i<cur_j;i++)
cout<<way[i].second<<endl;
return 0;
}
// 2 3 10
//V0 V1 V2 P3 P4 P5 V6 P7 V8 V9
快手笔试,推荐系统
最新推荐文章于 2025-11-02 15:03:32 发布
本文深入探讨了使用C++实现的深度优先搜索(DFS)算法,详细讲解了其在字符串处理和队列操作中的应用。通过具体的代码示例,展示了如何利用DFS遍历字符串集合,处理空位和填充问题,同时介绍了算法的执行流程和关键步骤。

753

被折叠的 条评论
为什么被折叠?



