深度优先搜索加char缓存|只需26ms
2025-08-04 15:15:29
发布于:北京
1阅读
0回复
0点赞
使用char数组加快输出,达到超快26ms的速度,远远快于平均的100ms以上
#include <iostream>
#include <cstring>
using namespace std;
int n;
int g[10];
bool flag[10];
char buf[1024];
char* p;
void put_num(int x) {
for (int i = 0; i < 5; ++i) {
*p++ = ' ';
}
char tmp[6];
int len = 0;
if (x == 0) tmp[len++] = '0';
else {
while (x > 0) {
tmp[len++] = x % 10 + '0';
x /= 10;
}
}
for (int i = 0; i < len; ++i) {
p[-1 - i] = tmp[len - 1 - i];
}
}
void dfs(int u) {
if (u == n + 1) {
p = buf;
for (int i = 1; i <= n; ++i) {
put_num(g[i]);
}
*p++ = '\n';
cout.write(buf, p - buf);
return;
}
for (int i = 1; i <= n; ++i) {
if (!flag[i]) {
flag[i] = true;
g[u] = i;
dfs(u + 1);
flag[i] = false;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
char cout_buf[1 << 20];
cout.rdbuf()->pubsetbuf(cout_buf, sizeof(cout_buf));
cin >> n;
dfs(1);
return 0;
}
这里空空如也
有帮助,赞一个