我正在参加一个离散的数学课程,我需要开发一个C 程序,该程序接收字符串作为输入,并返回其代表的自然数字(如果有)。自然数定义如下:0 = {},1 = {{}},2 = {{} {{}}}}},3 = {{} {} {}} {{} {} {} {} {} {}}}}}}}}}}}}等。我认为可以将基本案例为" {}",但我不确定如何考虑解决方案。我的一个朋友告诉我,他注意到开放式牙套的数量总是2^n,但我认为这并不是那么简单,因为这有一些问题。谢谢!
仅计数开放式括号不会区分良好的输入与畸形输入。
首先编写一个可以在给定输入值的程序中构建和输出括号形式的程序。
这将为您澄清问题。那么,您可以将支撑串输入与您的一个构造的支撑字符串相匹配吗?您可以从那里转到完整的解决方案吗?
编辑:上述解决问题的技术是首先解决一个简单的子问题或相关问题。另一种技术是寻找多种方法,然后选择一种方法(如果很难,请准备切换)。
解决此问题的一种不同的方法是将输入读取到一组SET集中。类似:
class Set {
std::set<Set> elements;
public:
void read(std::istream in) {...} // recursively reads & adds Sets
int size() {...}
}