我发现我们可以使用#pragma region和隐藏 VScode 中的代码#pragma endregion。我有两个问题:
#pragma region工作?我正在尝试解决UVA 417,但无法解决。我见过的所有解决方案都首先生成所有可能的值,将它们存储在映射中,然后搜索以查找所需的字符串。这对我来说似乎很微不足道。难道没有办法数学上解决这个问题吗?
考虑输入“ abc”。如果没有规定每个后续字符都应大于当前字符的条件,则可以通过简单地计算1 * 26 ^ 2 + 2 * 26 ^ 1 + 3 * 26 ^ 0来解决。难道没有办法以类似的方式解决原始问题吗?
我包括在网上找到的现有解决方案的代码:
#include <iostream>
#include <string>
#include <map>
#include <queue>
using namespace std;
map<string, int> M;
void generate_positions(){
queue<string> Q;
for(char c='a';c<='z';c++) Q.push(string(1,c));
string s;
int cont=1;
while(!Q.empty()){
s=Q.front();
Q.pop();
M[s]=cont;
cont++;
if(s.size()==5) continue;
for(char c=s[s.size()-1]+1;c<='z';c++) Q.push(s+c);
}
}
int main(){
generate_positions();
string s;
map<string, int> :: iterator it;
while(cin>>s){
it=M.find(s);
if(it==M.end()) cout<<0<<endl;
else cout<<it->second<<endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)