数据结构与算法——Permutation a String

state space tree back tracking brute force recursion 算法一: #include <iostream>using namespace std; void permutation(char S[], int k){ static int A[10] = {0}; static char res[10] = {0}; if(S[k] == '\0'){ res[k] = '\0'; printf("%s\n", res); } else{ for(int i = 0; S[i] != '\0'; ++i){ if(A[i] == 0){ A[i] = 1; res[k] = S[i]; permutation(S, k+1); A[i] = 0; } } } } int main() { char S[] = "ABC"; permutation(S, 0); return 0; } output:...

September 27, 2024 · 1 min · Rick Cui

C++ 沉思录笔记

有的情况下,现在的折衷方案比未来的理想方案好得多 我考虑问题的本质是什么,再定义一个类抓住这个本质,并确保这个类能独立地工作。然后在遇到符合这个本质的问题时就使用这个类。 只要类定义正确,我就只能按照我编写它的初衷那样去用它。 C++ 哲学:抽象,实用,只为用到的东西付出代价。 类设计者的核查表: 你的类需要一个构造函数吗? 你的数据成员是私有的吗?(使用函数,可以延迟计算,不必时时计算,保证数据成员的准确性) 你的类需要一个无参的构造函数吗?(对象数组) 是不是每个构造函数初始化所有的数据成员? 类需要析构函数吗? 类需要一个虚析构函数吗? 你的类需要复制构造函数吗?(是否需要深拷贝) 你的类需要一个赋值操作符吗? 你的赋值操作符能正确地将对象赋给对象本身吗? 你的类需要定义关系操作符吗? 删除数组时你记住了用 delete[] 吗? 记得在复制构造函数和赋值操作符的参数类型中加上 const 了吗? 如果函数有引用参数,它们应该是 const 引用吗? 记得适当地声明成员函数为 const 的了吗? 代理类:用类来表示概念(RAII) class Vehicle{ public: virtual double weight() = 0; virtual void start() = 0; virtual Vehicle* copy() const = 0; virtual ~Vehicle(){} }; class RoadVehicle: public Vehicle{ /* ....

January 26, 2022 · 3 min · Rick Cui