关于网易笔试的一道编程算法题的困惑,求各路大神指点

明知道这是一场意外 2017-03-25 08:33:11


标程是用暴力枚举做的
#include <bits/stdc++.h>

using namespace std;

vector<string> a;
int n;
int b[10];
int ret;
void dfs(int i) {
if(i == a.size()) {
ret++;
} else {
for(int j = 0; j < a[i].size(); j++) {
if(b[a[i][j] - '0']) {
b[a[i][j] - '0'] = 0;
dfs(i + 1);
b[a[i][j] - '0'] = 1;
}
}
}
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
string x; cin >> x;
a.push_back(x);
}
for(int i = 0; i < 10; i++) b[i] = 1;
ret = 0;
dfs(0);
cout << ret << endl;
return 0;
}


楼主愚笨,画了半天草图也不是很懂它的思路,或者说有别的思路欢迎指出
...全文
281 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧