请问一下我这个代码有什么问题啊?自己测试一切正常,但放在评测系统里为啥就编译失败嘞?
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e2 + 10;
const int INF = 0x3f3f3f3f;
char s[MAXN];
bool vis[55];
int ans[55];
int len, tot, n1, n2;
bool DFS(int d1, int d2, int p, int cnt) {
if (cnt == tot)
return true;
if (d1 < n1) {
int x = s[p] - '0';
if (x != 0 && !vis[x]) {
vis[x] = true;
ans[cnt + 1] = x;
if (DFS (d1 + 1, d2, p + 1, cnt + 1))
return true;
vis[x] = false;
}
}
if (d2 < n2) {
int x = (s[p] - '0') * 10 + (s[p + 1] - '0');
if (x >= 0 && x <= tot && !vis[x]) {
vis[x] = true;
ans[cnt + 1] = x;
if (DFS (d1, d2 + 1, p + 2, cnt + 1))
return true;
vis[x] = false;
}
}
return false;
}
int main(void) {
while (scanf ("%s", s + 1) == 1) {
memset (vis, false, sizeof (vis));
len = strlen (s + 1);
tot = (len + 9) / 2;
if (tot <= 9) {
for (int i = 1; i <= len; ++i) {
printf ("%c%c", s[i], (i == len) ? '\n' : ' ');
}
} else {
n1 = 9;
n2 = tot - 9;
DFS (0, 0, 1, 0);
for (int i = 1; i <= tot; ++i) {
printf ("%d%c", ans[i], (i == tot) ? '\n' : ' ');
}
}
}
return 0;
}