33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
const int MAX = 100;
int ch[MAX], len = 0;
int stk[MAX], top = 0; //结果存到次数值里
void print() { //输出结果
for (int i = 0; i < top; i++)
cout << (char)stk[i];
cout << endl;
}
void search(int n) {
if (n == 0) //当n减到0,输出
print();
for (int i = 0; i < len; i++) { //对每一种情况都进行考虑
if (ch[i] <= n) { //保证这个字符的ASCII比n小
stk[top++] = ch[i]; //存进stk中
search(n - ch[i]);
top--; //把stk末尾的值忽略
}
}
}
int main() {
for (int i = '0'; i <= '9'; i++) //初始化可选字符的数值
ch[len++] = i;
for (int i = 'a'; i <= 'z'; i++)
ch[len++] = i;
for (int i = 'A'; i <= 'Z'; i++)
ch[len++] = i;
int n;
cin >> n;
search(n);
return 0;
}