c++ - 在 C++ 中的以下程序中重复调用函数
问题描述
我必须编写一个程序,该程序需要输入包含一些“$”和数字的字符串。程序的输出由所有可能的字符串组成,其中字符串中的 '$ 被所有其他数字替换。我为此编写了以下代码。
#include<bits/stdc++.h>
using namespace std;
int numberOf(string in)
{
int count = 0;
for(int i = 0; i <= in.size()-1; i++)
if(in[i] == '$')
count++;
return count;
}
void solve(string in, string in1, vector <string> &s,
int index)
{
if(numberOf(in) == 0)
{
s.push_back(in);
return;
}
if(index == in.size())
{
return;
}
if(in1.empty())
{
return;
}
else
{
if(in[index] == '$')
{
string in2 = in;
in2[index] = in1[0];
string in3 = in1;
in3.erase(in3.begin());
solve(in2, in1, s, index+1);
solve(in, in3, s, index);
return;
}
else
{
solve(in, in1, s, index+1);
return;
}
}
}
void replaceDollar(string in)
{
string in1 = in;
int count = 0;
for(int i = 0; i <= in.size()- 1; i++)
{
if(in[i] != '$')
{
in1.push_back(in[i]);
count++;
}
}
count = in.size() - count;
cout << "Number is " << count << "\n";
vector <string> s;
solve(in, in1, s, 0);
for(auto i = s.begin(); i != s.end(); i++)
cout << *i << " ";
cout << "\n";
}
int main()
{
int t;
cin >> t;
while(t--)
{
string in;
cin >> in;
replaceDollar(in);
}
return 0;
}
对于以下输入
1
$45
预期的输出应该是
445 545
但它返回
445 545 445 545
谁能解释为什么它输出重复的字符串?也有人可以提出更好的方法来解决这个问题吗?提前致谢!
解决方案
假设这是家庭作业:
- 重来。你的代码对于这个问题来说太复杂了。
- 我会把一切都当作类型
char
- 循环/迭代所述字符串,用每个数字
std::string::replace()
替换每个实例。 -- 如果你的老师不希望你使用库,那么添加另一个循环并自己比较。 3a。当然,添加一个检查,这样你就不会替换为$
std
$
$
- 在每次迭代时创建字符串的新副本。
stdout
在创建它们时打印每个。
看到这个帖子:
ps 专业提示:不要使用using namespace
. 在你的调用中使用完整的命名空间;例如:
坏的
using namespace std;
string = "hello world";
好的
std::string = "hello world";
推荐阅读
- r - R 字典和列表
- android - 在 ScrollView 中显示图像?
- javascript - 在谷歌上设置一个带有动作的计时器
- excel - 在 excel 中从另一个插件启动一个插件
- angular - Angular with Angular Material - MatTable(s) 和多个 MatTab(s)
- html - 从 AWS S3 发送邮件时遇到问题
- python - 在 Mac 上的 pyzo 中保存动画
- python - Python CX_Oracle:如何在另一个查询中使用返回的元组
- asp.net-core - 在 Vue.js 站点上使用带有 HardSource 的 Webpack 意外和神秘的 dotnet 运行“失败”消息
- c# - QR 解码不适用于 ZXing 和 Aforge